在jQuery库中,我发现了这一行
jQuery.extend = jQuery.fn.extend = function() {
Run Code Online (Sandbox Code Playgroud)
这种困惑让我感到困惑.我认为一个给定的对象自动提供对其原型方法的访问(换句话说,如果一个方法或var没有在对象本身上解析,则在其原型上尝试,然后在原型的原型上等等).
那么,将功能与对象和原型相关联的原因是什么?(在jQuery fn中是原型的别名).
魔法prototype
是构造者的属性,而不是对象.jQuery的一个实例extend
将从原型继承,但jQuery需要自己的副本.
以上是完全正确的,但可能会产生误导.所有对象都有一个用于属性解析的内部[[Prototype]]属性,但它不一定可以在Javascript中直接访问(参见ECMA- 262§8.6.2和4.2.1).您可以通过obj.constructor.prototype
但不使用[[Prototype]]属性来访问对象的原型,事实上,它有点不同.某些浏览器(例如Firefox和Safari)支持__proto__
可能[[Prototype]] 的非标准属性.由于它不是标准属性,因此它的用处有限.
以下是§4.2.1的示例,以帮助一点:
alt text http://img121.imageshack.us/img121/3504/prototypes.png
CF是一个构造函数; 每个cf i都是从CF创建的.从CF到Cf p看到的实线箭头表示您可以在Javascript中访问的原型属性.虚线箭头表示每个对象对其原型的引用以及Javascript引擎使用的引用,但不会向脚本公开.请注意,CF有自己的隐式原型链接Function
.
归档时间: |
|
查看次数: |
221 次 |
最近记录: |