比方说阵列样机已经增加了一些辅助函数后数组的键:方法显示为深克隆与jQuery.extend
Array.prototype.doSomething = function() { ... }
当我注销一个简单的数组到控制台...
console.dir([1,2,3]);
...我得到:
Array [3]
0: 1
1: 2
2: 3
length: 3
__proto__: Array[0]
doSomething: function()
一切正常为止。
但只要我深克隆使用$ .extend阵列(深克隆,因为我的实际数据是比较复杂的 - 用数组作为属性的对象,但在任何情况下发生的)...
$.extend(true, [], [1,2,3]);
我突然得到:
Array [3]
0: 1
1: 2
2: 3
doSomething: function() // ???
length: 3
__proto__: Array[0]
doSomething: function()
它看起来像原型方法已被添加为数组实例的实际项目。
在复制之前,JQuery.extend没有测试hasOwnProperty()吗?或者我在这里做错了什么?
是的,但是你也做错了,请参阅[如何在Array.prototype和Object.prototype上定义javascript方法,以便它不出现在循环中](http:// stackoverflow .com/q/13296340/1048572) – Bergi