-
prototype是指原型对象, 一个函数所有的实例都会指向它
- 非标准实例属性
__proto__可从实例中访问prototype
- 一般来说:
Funtion Foo() {
this.prototype.xxx = xxx; // 这样虽然能修改原型, 但每次new一次Foo, 都会执行一次.
}
Foo.prototype.xxx = xxx; // 这样就只会执行一次, 靠谱, 但每个属性都要打这么长
Foo.prototype = { // 这种效果和上面的一样, 但写法更简洁
constructor: Person, // 不加这句的话, construtor将不会再指向Foo, 虽然没什么大问题, 但还是加上为好
xxx: xxx,
xxx, xxx
}
- 它自身有个
constructor属性指向函数本身.
- 原型模式主要是用来解决属性/方法共享的, 若是不同实例间并不需要优化这个, 那直接在Funtion里面添加this的属性也没什么不妥.
- 实例中原型仅指向原型, 而不是指向构造函数.
- 重写原型对象后, 会切断之前所创建对象与新原型之间的联系.
function Person() {}
var friend = new Person();
Person.prototype = {
constructor: Person,
name: 'df',
age: 29,
sayName: function () {
alert(this.name);
}
}
friend.sayName(); // 错误
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。