我正在将一些旧代码转换为 Javascript 中的对象文字表示法,恐怕我遇到了一些麻烦。我知道如何定义属性,也知道如何定义方法,但是如果我想将方法的返回值作为属性分配怎么办?
我已经提供了来自 Chrome 控制台的错误输出代码。我看不出我做错了什么,但控制台告诉我,我要么试图找到全局范围内不存在的东西,要么只是尝试不存在的东西。这里是:
代码:
var testobj = {
a: 2,
b: 4,
c: function() {
return this.a * this.b;
},
d: this.c(), // OK, got it, it's trying to call it from global scope. Fine.
e: function() {
if (this.d) {
console.log("SUCCESS");
console.log(this.d);
} else {
console.log("ERROR");
}
}
}
错误:
TypeError: Object [object global] has no method 'c'
新代码:
var testobj = {
a: 2,
b: 4,
c: function() {
return this.a * this.b;
},
d: testobj.c(), // but if I change it like this, it still doesn't work. What gives?
e: function() {
if (this.d) {
console.log("SUCCESS");
console.log(this.d);
} else {
console.log("ERROR");
}
}
}
新错误:
TypeError: Cannot call method 'c' of undefined
谁能看到我做错了什么?