为什么jQuery core.js
不是extend
定义如下:
jQuery.extend = jQuery.fn.extend = function() {
...
}
而不是原型如:
jQuery.prototype.extend = jQuery.fn.prototype.extend = function() {
...
}
据推测,使用前者,从jQuery创建的对象将不具有扩展功能。
答案 0 :(得分:4)
因为jQuery.fn === jQuery.prototype
它是在原型上定义的。 jQuery刚刚决定将原型别名为.fn
这就是为什么
$().extend({
"lulz": "baz"
}, {
"more-lulz": "no wai"
})["more-lulz"] === "no wai"; // true
答案 1 :(得分:2)
好吧,因为fn
不是prototype
属性的快捷方式:
console.log($.prototype === $.fn);
也许John Resig厌倦了为每个方法输入prototype
并设置了一个漂亮的别名fn
(这确实更短,在我看来更具启发性)。