我试图扩展代理,如下:
class ObservableObject extends Proxy {}
Run Code Online (Sandbox Code Playgroud)
我使用Babel将其转换为ES5,我在浏览器中收到此错误:
app.js:15 Uncaught TypeError: Object prototype may only be an Object or null: undefined
Run Code Online (Sandbox Code Playgroud)
我查看了它指向的代码行.这是代码的一部分,箭头指向有问题的代码行:
var ObservableObject = exports.ObservableObject = function (_Proxy) {
_inherits(ObservableObject, _Proxy); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
function ObservableObject() {
_classCallCheck(this, ObservableObject);
return _possibleConstructorReturn(this, Object.getPrototypeOf(ObservableObject).apply(this, arguments));
}
return ObservableObject;
}(Proxy);
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么我可能会收到此错误?这是巴贝尔的错误吗?当您尝试扩展代理时应该发生什么?
this.draw = function() {
console.log(this.buttonList.length);
for(a = 0; a < this.buttonList.length; a++) {
console.log(this.buttonList.length, a);
this.buttonList[a].draw();
}
};
Run Code Online (Sandbox Code Playgroud)
所以我在一个对象中有这个功能,并且它没有像我预期的那样工作.当我使用上述console.log语句运行它时,它会在控制台上记录它:
2
2 0
Run Code Online (Sandbox Code Playgroud)
这似乎告诉我,我的for循环并没有循环遍历阵列上的每个项目,而且我一直在思索为什么那将是相当长一段时间.有谁知道为什么它只执行a = 0的动作?
编辑:我不知道这是否有所不同,但这个函数每秒调用约60次.