我正在尝试删除数组的值,没有删除其方法。请考虑以下代码:
var Project = function () {
//The array where all data will be stored before they are sent..
this.data = [];
// ... Along with a function to send data to other source ...
this.data.send = function () {
}
//Here is where the data would be altered ...
//Send the data ...
this.data.send();
//Remove the data, we don't want it when sending the next time ...
this.data = [];
// ... but this (obviously) results in the removal of the send() function ... :-(
}
这也将删除函数.send()
,这不是我正在寻找的行为。什么是最平滑,最恰当的方法来避免这个问题?谢谢!
答案 0 :(得分:3)
Sirko的建议应该有效,但在我看来,你的问题指向设计缺陷。
为什么不公开像对象那样的数组,方法永远不会改变,但是有一个可以随意操作的内部数组。
var data = {
items: [],
push: function(item) {
this.items.push(item);
},
send: function() {
// send the items
this.items = [];
}
}
data.push('abc');
data.send();
console.log(data.items.length) // 0
让数组成为数组,并使用其他结构来操作它们。
答案 1 :(得分:2)
使用this.data = [];
将旧数组对象替换为新数组,从而丢失所有附加函数。您必须修改现有对象以保留属性。例如,您可以使用splice
(docu@MDN):
this.data.splice( 0, this.data.length );
另外,Elliot Bonneville建议您可以将长度设置为零(again@MDN)
this.data.length = 0;
答案 2 :(得分:1)