我正在尝试创建一个可以自行设置的数组对象。 像这样......
array = new Array(10)
array.someMethod = function () {
this = new Array(20)
}
除之外,不起作用,因为this
无法像这样设置。
或多或少我想要一个我使用array[index]
的对象。
答案 0 :(得分:0)
在我看来,这可以通过使用一个对象并将数组存储在一个对象的属性中来实现。我正在学习class
语法,所以我这样做了,但我认为相同的方法适用于常规对象。
class MyArray {
constructor(num) {
console.log(`building MyArray with ${num} objects`);
this.innerArray = new Array(num);
}
update(num) {
console.log(`updating MyArray to have ${num} objects`);
this.innerArray = new Array(num);
}
get() { return this.innerArray }
}
let foo = new MyArray(10);
foo.get()[0] = "bar";
console.log(foo.get());
foo.update(20);
foo.get()[0] = "baz";
console.log(foo.get());

答案 1 :(得分:0)
你提出问题的方式不太对,你应该更好地解释。 不确定这是你想要的。
您无法更改javascript中的this
。
但是prototype
中的函数将以对象作为其上下文来调用。所以Array.prototype.length通过让arr作为它的上下文给出arr.length
中的长度。 Array.prototype.splice
所以
Array.prototype.testA = function() {
// this.splice(0,this.length);
var a = [3,5,7];
// new Array(23).fill().map( (a,_)=>_)
this.splice(0,this.length,...a);
}
Array.prototype.testAA = function() {
var a = [3,5,7];
this.splice(this.length,0,...a);
}
var a = [1];
a.testAA();
console.log(a);
a.testA();
console.log(a);