https://segmentfault.com/a/1190000010354583
https://blog.csdn.net/lxcao/article/details/52743088
/*
* 1.在js中,函数也是一个对象类型的数据
* 2.函数下也会有很多的特征(属性、方法),这里的属性和方法不是指函数体内的代码
* 3.当一个函数被创建的时候,系统会自动的给函数添加一些属性和方法,其中有一个属性名称为:
* prototype(原型),它的值是一个对象
* 4.当一个对象被创建的时候,系统会自动给这个对象添加一个属性,名称为proto,他的值也是一个对象
* 5.当我们调用一个对象下的属性或方法的时候,首先会在该对象自身上查找是否存在,如果自身没有,那么或查找改对象
* 下的proto属性下是否存在该属性或方法,如果有则调用了
**/
//构造函数
function Fn()
{
this.x = 1;
}
Fn.prototype.y = 2;
Object.prototype.y = 3;
console.dir(Fn);
// Fn = {
// prototype:{}
// }
//通过new来创建一个Fn对应的实例化对象
let f = new Fn();
console.dir(f);
console.log(f._proto_ == Fn.prototype) //true
console.log(f.x) //1
console.log(f.y) //2
console.log(f.z) //3
//f.y => f._proto_.y => Fn.prototype.y
//f.z => f._proto_.z => Fn.prototype.z => Fn.protot
网友评论