标题:关于JS原型.原性链的总结整理 出处:刘新修 时间:Tue, 27 Sep 2016 13:39:07 +0000 作者:刘新修 地址:http://liuxinxiu.com:80/prototype/ 内容: 第一部分[原型prototype]: 任何对象及Function方法都有所对应的"prototype"原型!一切基于原型! 任何类型对象都有所对应的"constructor"构造器即内置构造函数,任何自定义函数及内置函数都有所对应的原型对象,说到底大家都会继承有: "对象/Object"的原型。 注:那怕是用字面量声明的对象var str='ss'; 其构造器使用了function String(){} 则间接使用了String.prototype的原型! str 是用String()函数构造的实例!也就是说String函数的prototype原型就是str实例的间接原型! JavaScript代码 /******** 自定义构造函数 ********/ function Fun(){} var foo=new Fun(); foo.constructor==Fun() //也就是说自定义Fun函数的prototype原型就是foo实例的间接原型!自定义function的原型将继承Object /******** 实例对象可以直接使用__proto__找到构造器使用的prototype ********/ foo.__proto__==foo.construtor.prototype; //true, 但是,__proto__属性在IE浏览器中一直到IE11才被支持 /******** 自定义函数和原型的关系 ********/ function c(){} c.prototype ->c {} --->constructor: function() --->proto: Object //对象继承的原型 ============================================================================ c.constructor //c本身已经是构造器了 function Function() { [native code] } Function.prototype //构造函数Function的原型,如果没有特殊定义就是空function function (){} ============================================================================ /******** 布尔值实例 ********/ true.constructor function Boolean(){ [native code] } Boolean.prototype -> Boolean{ [[PrimitiveValue]]: false} --->constructor: function Boolean() --->toString: function toString() --->valueOf: function valueOf() ---> proto : Object //对象继承的原型 Generated by Bo-blog 2.1.1 Release