Javascript TypeError:this.list.push不是ecmascript 6中的函数
调用我的GroceryList类的add函数时,出现错误: TypeError:this.list.push不是函数 为什么会这样Javascript TypeError:this.list.push不是ecmascript 6中的函数,javascript,Javascript,调用我的GroceryList类的add函数时,出现错误: TypeError:this.list.push不是函数 为什么会这样 class GroceryList { constructor() { this.list = { value: [], writable: false, enumerable: true }; } add(it
class GroceryList {
constructor() {
this.list = {
value: [],
writable: false,
enumerable: true
};
}
add(item) {
this.list.push(item);
}
getAll() {
return this.list;
}
getItemIndex(value) {
var index = this.list.length;
while(--index > -1) {
if(this.list[index] === value) {
return index;
}
}
return -1;
}
}
你弄糊涂了
- 整个对象
- 作为该对象属性的列表
list
对象包含一个列表,但这并不意味着它是一个列表。您应该编写list.value.push(x)
似乎您正在尝试使用属性描述符。然而,这些描述符只适用于
按字面意义将具有属性值
、可写
和可枚举
的对象分配给此列表
你似乎想要的是:
Object.definProperty(this, 'list', {
value: [],
writable: false,
enumerable: true
});
现在,
this.list
返回一个数组,但无法为属性指定新值。this.list
是一个对象。只有数组具有push
方法。ES6没有改变这一点。是的,您正在将list
声明为{…}
。不过,我知道您正在尝试做什么。
Object.definProperty(this, 'list', {
value: [],
writable: false,
enumerable: true
});