转自:https://www.jianshu.com/p/86267fab4878/ 作者:张培跃
prototype和__proto__属性每次看完又忘记,看到上述文章后,又想起来记下笔记
参考这篇文章:讲的很详细:https://blog.csdn.net/cc18868876837/article/details/81211729
class Box{
constructor(num1,num2){
this.num1 = num1;
this.num2=num2;
}
sum(){
return num1+num2;
}
}
var box1=new Box(12,88);
var box2=new Box(40,60);
box1.__proto__.sub=function(){
return this.num2-this.num1;
}
console.log(box1.sub());//76
console.log(box2.sub());//20
console.log(box1.prototype);//undefined
console.log(box1.__proto__);//{sub: ƒ, constructor: ƒ, sum: ƒ}
console.log(Box.prototype);//{sub: ƒ, constructor: ƒ, sum: ƒ}
console.log(typeof(box1));//"object"
由上述运行结果可以看出来:
__proto__是对象独有的
prototype属性是函数所独有的,但是由于JS中函数也是一种对象,所以函数也拥有__proto__和constructor属性