关于继承和原型的javascript问题

关于继承和原型的javascript问题,javascript,Javascript,在jQuery库中,我找到了这一行 jQuery.extend = jQuery.fn.extend = function() { 这让我很困惑。我认为一个给定的对象会自动提供对其原型方法的访问(换句话说,如果一个方法或var未在对象本身上解析,则在其原型上进行尝试,然后在原型的原型上进行尝试,依此类推) 那么,将函数与对象和原型关联的原因是什么?(在jQuery中,fn是prototype的别名)。神奇的prototype是构造函数的属性,而不是对象。jQuery实例将继承原型的extend

在jQuery库中,我找到了这一行

jQuery.extend = jQuery.fn.extend = function() {
这让我很困惑。我认为一个给定的对象会自动提供对其原型方法的访问(换句话说,如果一个方法或var未在对象本身上解析,则在其原型上进行尝试,然后在原型的原型上进行尝试,依此类推)


那么,将函数与对象和原型关联的原因是什么?(在jQuery中,fn是prototype的别名)。

神奇的
prototype
是构造函数的属性,而不是对象。jQuery实例将继承原型的
extend
,但jQuery需要自己的副本

上述说法是正确的,但可能会误导。所有对象都有一个用于属性解析的内部[[Prototype]]属性,但它不一定可以在Javascript中直接访问(参见§8.6.2和§4.2.1)。您可以通过
obj.constructor.prototype
访问对象的原型,但它不使用[[prototype]]属性,事实上,它是一个。一些浏览器(如Firefox和Safari)支持非标准的
\uuuuu proto\uuuu
属性,该属性可能是[[Prototype]]。因为它不是一个标准属性,所以用处有限

下面是§4.2.1中的一个示例,有助于:


CF是一个构造函数;每个cfi都是从cf创建的。从CFCFp看到的实心箭头表示可以在Javascript中访问的原型属性。虚线箭头表示每个对象对其原型的引用以及Javascript引擎使用的引用,但不向脚本公开。请注意,CF有自己的隐式原型链接,指向
函数

您对最后一部分的意思是什么?你应该如何设定原型?