原型中构造函数存在的问题
function Person(name.age,sex){
this.name = name
this.age = age
this.sex = sex
this.sub = function(){
console.log("1111")
}
}
let p = new Person("张三","10","男")
new Person("李四","16","男")
new Person("王武","20","男")
p.sub() // 1111
复制代码
- 每创建一个对象都会形成一个新的函数,这样会导致资源的浪费
- 解决的方法是让所有实例对象可以调用,节省了空间
- 让构造函数通过原型分配函数,让所有实例对象共享
- JavaScript规定每一个构造函数必须有prototype属性
- 指向另一个对象(这个prototype就是一个对象)
- 这个对象的所有属性和方法都会被构造函数所拥有
- 我们可以把不变的方法,直接定义在构造函数的 .prototype
- 在这个对象中的所有实例对象都可以使用原型的方法
- 又因为每个实例对象都有__proto__属性,他们都指向构造函数的原型prototype
- 所有每个实例对象都可以访问原型中的属性和方法
function Person(name.age,sex){
this.name = name
this.age = age
this.sex = sex
}
Person.prototype.sub = function(){
console.log("2222")
}
let p = new Person("张三","10","男")
new Person("李四","16","男")
new Person("王武","20","男")
p.sub() // 2222
consloe.log(p.__proto__ === Person.prototype) // true
// __proto__ 是一个非标准属性
// __proto__ 和 prototype 是等价的
// __proto__ 的对象原型是为对象提供查找了一个机制也可以说是一条路线
// 在项目开发过程中不可以使用__proto__ 它只是用来指向prototype
作者:36K纯忽悠
链接:juejin.cn/post/716097…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。