我写了这个类,并为它设置了一个数组属性。然后,我想在这个数组中添加一个项目。
但是,当我尝试这样做时,我收到错误“未捕获TypeError
:无法读取push
的属性undefined
”。
这不可能吗?
class test {
constructor() {
this.myArray = [];
}
myMethod() {
this.myArray.push("ok");
}
};
console.log(test.prototype.myMethod());

答案 0 :(得分:5)
这不是如何使用类。您需要先使用test
实例化new test()
。在您的案例中从未调用constructor
,因此this.myArray
从未定义过。
这是唯一可行的方法:
let testInstance = new test();
testInstance.myMethod();
这样,constructor
被调用,没有错误。
当然,接下来你需要一些方法来检索你的数组,以便看到效果。
答案 1 :(得分:1)
尝试先创建实例。请参阅我详细评论过的代码
var test = function(){
this.myArray = [];
}
test.prototype = { // add our custom constructor and custom methods
constructor: test,
myMethod: function() {
this.myArray.push("ok");
}
};
var myVar = new test(); // create new instance of test
myVar.myMethod(); // run custom method to push val
console.log( myVar.myArray );
{{1}}
答案 2 :(得分:1)
您需要先启动课堂测试。
var t = new test();
供您参考:
console.log(test.prototype.myMethod());
会给你" undefined"。尝试例如:
var t = new test();
t.myMethod();
console.log(t.myArray);
获得类似于此的输出:
Array [ "ok" ]