TypeError:this.list.push不是ecmascript 6中的函数
TypeError: this.list.push is not a function in ecmascript 6
当调用GroceryList类的add函数时,我得到一个错误:
类型错误:this.list.push不是函数
为什么会这样?
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.defineProperty
。
this.list = {
value: [],
writable: false,
enumerable: true
};
从字面上将具有属性value
、writable
和enumerable
的对象分配给this.list
。
你似乎想要的是:
Object.definProperty(this, 'list', {
value: [],
writable: false,
enumerable: true
});
现在this.list
返回一个数组,但不可能为该属性分配新值。
相关文章:
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 返回对象的ECMAScript 6箭头函数
- ECMAscript 是否提供任何构造函数的方法?
- 在实现ECMAScript 5 insertAjacentHTML()函数时,用户定义的函数不是函数错误
- 在类中使用Ecmascript 6箭头函数作为方法的正确方法是什么
- TypeError:this.list.push不是ecmascript 6中的函数
- 运行从ecmascript 6模块加载的函数
- ECMAScript 2015,可迭代的析构函数表达式
- ECMAScript-6导入嵌套函数
- 为什么返回这个ECMAScript Harmony箭头函数表达式会产生意想不到的行为?
- ECMAScript函数规范
- 函数的非ecmascript代码
- 蒙戈.光标#映射(回调,[thisArg])与ECMAScript 6箭头函数
- 应该使用lodash函数吗?地图和_.一旦它们成为ecmascript的一部分,就调用它们
- ECMAScript 6箭头函数
- ecmascript 5 - JavaScript '内部函数
- 在ECMAScript规范v5中缺少关于进入在全局作用域中声明的函数时会发生什么的详细信息
- 使用ECMASCRIPT 6生成器/函数求和数组的最佳方法是什么
- 如何从Ecmascript 6(ES6)上类对象中的事件回调函数访问对象成员
- ecmascript 6-Javascript中的默认构造函数