在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原型链图原型必备知识要了解原型就必须搞清三个属性: 1.__proto__、 constructor属性是对象所独有的; 2.prototype属性是函数独有的; 3.js中函数也是对象的一种,那么函数同样也有属性__proto__、 constructor; 原型五大规则: 1.所有引用类型(对象,数组,函数)都具有对象特性,即可以自由扩展属性 2.所有引用类型(对象,数组,函数)都具有一个__proto__(隐式原型)属性,是一个普通对象 3.所有的函数都具有prototype(显式原型)属性,也是一个普通对象 4.所有引用类型(对象,数组,函数)__proto__值指向它构造函数的prototype 5.当试图得到一个对象的属性时,如果变量本身没有这个属性,则会去他的__proto__中去找 prototype属性(显示原型)首先创建一个构造函数 var Parent = function(){ } //定义一个函数,那它只是一个普通的函数 var p1 = new Parent(); //通过关键字new,Parent成为构造函数 //创建了一个Parent构造函数的实例 p1
Parent是构造函数,Parent.prototype就是原型
proto属性(隐式原型)__proto__属性是对象(包括函数)独有的。 每个对象都有__proto__属性,该属性指向的就是该对象的原型对象。 p1.__proto__ === Parent.prototype; // true __proto__通常称为隐式原型,prototype通常称为显式原型,可以说一个对象的隐式原型指向了该对象的构造函数的显式原型。那么在显式原型上定义的属性方法,通过隐式原型传递给了构造函数的实例。这样一来实例就能很容易的访问到构造函数原型上的方法和属性了。
Parent.prototype.__proto__ === Object.prototype; //true 这里引出原型链的概念,当调用 当然如果找到Object.prototype上也没找到,就在 constructor属性既然构造函数通过 prototype 来访问到原型,那么原型也应该能够通过某种途径访问到构造函数,这就是 constructor。 如前面的例子p1就是一个对象,那p1的构造函数就是Parent()。Parent的构造函数是Function() p1.constructor => f Parent{} Parent.construtor => f Function() { [native code] } Function.constructor => ƒ Function() { [native code] } Function是所有函数的根构造函数。 通过例子可以看到,p1的 总结
|
请发表评论