gpt4 book ai didi

javascript - ".this"未修改原始对象

转载 作者:行者123 更新时间:2023-11-29 20:36:07 25 4
gpt4 key购买 nike

我正在使用 javascript 数据结构进行一些练习,本质上是在尝试扩展 Array。

class Collection {
constructor(array){
let collection = Object.create(Array.prototype);

collection = (Array.apply(collection, array) || collection);

collection.clear = () => {
while(this.length > 0){
this.pop();
}

return this
};

return(collection);
}; }

问题是当我执行以下操作时

c = new Collection([1,2,3]);
c.clear();
当我期待 [ ] 时,

c 仍然是 [1,2,3]。为什么修改this不修改c

最佳答案

Why does modifying this not modify c?

因为 this 引用了您使用 new Collection(...) 创建的 Collection 实例,而您的构造函数返回的值让集合;在那种情况下,这不是 this

除此之外,您的代码非常有趣。我认为这就是您要构建的内容:

class Collection extends Array {
constructor(array) {
// call the constructor of the Array class
super(array.length);

// copy the values from `array` onto `this`;
Object.assign(this, array);
}

clear() {
// that's all it takes to empty an Array
this.length = 0;
}
}


var c = new Collection([1, 2, 3]);
console.log(c);

c.clear();
console.log(c);

关于javascript - ".this"未修改原始对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56655159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com