在Array.prototype上创建变异函数

时间:2018-04-14 19:57:18

标签: javascript

例如

var arr = [1,3];
arr.empty() // changes arr to [];
Array.prototype.empty = function(){
  this = []; // this throws error
}

请帮助我理解,解决方法是什么。

2 个答案:

答案 0 :(得分:1)

使用Array.splice()来变异(删除)数组的内容,而不是替换它:



Array.prototype.empty = function(){
  this.splice(0, this.length);
}

var arr = [1,3];
arr.empty();

console.log(arr);




答案 1 :(得分:0)

  

什么是解决方法?

首先,问题是:你无法改变这个'关键词。解决方案非常简单!

下面:

Array.prototype.empty = function(){
    this.length = 0;
}

由于数组长度设置为零,因此无法保留任何条目!

所以最后的代码:

Array.prototype.empty = function(){
    this.length = 0;
}
var arr = [1, 3];
console.log(arr);
arr.empty();
console.log(arr);