扫码关注官方订阅号
但是var m = new f(); m.print();原理是什么呢
ringa_lee
你那个报错坑爹啊,
不是f.print is not a function? f.prototype.print=function(){..}//是给f的prototype属性添加了一个print方法,而不是给f添加了一个方法,这点你要搞清楚
你有一个误区,我知道你的想法,你是想在它的原型上定义一个方法,然后再f.print() 去执行,你原本以为它会去原型中查找这个方法,可是它报错了,因为,你是在Function 类型上prototype 也就是说你定义的是函数的prototype,然后你通过f.去找他的方法,怎么可能找到呢?
两 点
第一 , 只有object类型才能通过 "." 操作符去查找其属性及方法,未实例的构造函数不可以,这点在ES6中的 static 静态类可以实现,你可以去找一下资料.第二 , 把f函数实例化 var s = new F(); s.print();
var s = new F(); s.print();
另外需要注意:构造函数统一首字母大写哦!
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你那个报错坑爹啊,
你有一个误区,我知道你的想法,你是想在它的原型上定义一个方法,然后再f.print() 去执行,你原本以为它会去原型中查找这个方法,可是它报错了,因为,你是在Function 类型上prototype 也就是说你定义的是函数的prototype,然后你通过f.去找他的方法,怎么可能找到呢?
两 点
第一 , 只有object类型才能通过 "." 操作符去查找其属性及方法,未实例的构造函数不可以,这点在ES6中的 static 静态类可以实现,你可以去找一下资料.
第二 , 把f函数实例化
var s = new F(); s.print();另外需要注意:构造函数统一首字母大写哦!