/*代码片段*/ jQuery.fn = jQuery.prototype ={ jquery:core_version, //版本号 constructor:jQuery, //构造器? ... } /*代码片段*/ Q:jQuery函数在属性中添加constructor属性,照理来说每个函数本身自带有constructor属性,为何要手动添加呢? A:是为了手动修正jQuery函数的构造器指向。具体解析如下。 /*——————————————————————————解析————————————————————————————————————————————*/ function Aaa(){ } Aaa.prototype.name =‘hellow‘; Aaa.prototype.age = 18; /*当一个函数创建之后,js会在函数的原型下自动生成constructor属性并指向本身*/ /*Aaa.prototype.constructor = Aaa*/ var a1 = new Aaa(); alert(a1.constructor);//function Aaa(){} /*但是constructor属性是很容易被修改的,有时候也可能是无意*/ function Bbb(){ } /*直接赋值修改 如 Bbb.prototype.constructor = Array*/ /*JSON式书写会导致对象覆盖prototype中所有属性*/ Bbb.prototype= { name:"hellow", age:30 } var b1 = new Bbb(); alert(b1.constructor);//function Object(){} 即新对象 /*————————————————————————————————END—————————————————————————————————————————————*/
02.每天一点JQUERY源码——手动修正constructor属性的奥义
原文:http://www.cnblogs.com/merzoo/p/5281775.html