var ArrayExtension = {
foo: function(){
return "bar"
}
}
$.extend(Array, ArrayExtension);
var array = ['zero','one','two'];
console.log('From class: ' + ArrayExtension.foo() ); // bar
console.log('From extended original class: ' + Array.foo() ); // bar
console.log('From instance of original class: ' + array.foo() ); // undefined is not a function, expected 'bar'
更新
extend
方法似乎有效。 Array
现在包含运行匿名函数的foo属性,该函数返回bar
...
但为什么Array
,array
的实例不包含此类属性呢?
答案 0 :(得分:2)
因为您正在扩展Array
而不是数组原型。
这将有效:
$.extend(Array.prototype, ArrayExtension);
在JavaScript中,对象是在原型之后创建的。数组实例从数组原型中获取所有方法。如果你希望每个数组实例都有你的foo方法,你将不得不扩展数组原型,而不是数组对象。