如何将一个方法的返回值赋给Javascript中的另一个对象属性?
How do I assign the return value from a method to another object property in Javascript?
我正在将一些旧代码转换为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
有人能看出我做错了什么吗?
你可以使用:
var testobj = {
a: 2,
b: 4,
c: function() {
return this.a * this.b;
},
d: function() {
return this.c();
},
e: function() {
if (this.d) {
console.log("SUCCESS");
console.log(this.d);
} else {
console.log("ERROR");
}
}
}
当您执行d: this.c()
时,this
实际上是全局对象。这是因为,在创建testobj
时,作用域是全局对象,所以this
是全局对象。
如果使用
d: function() {
return this.c();
}
你只是将testobj.c
设置为某个功能。该函数中的this
只在调用d
时计算。因此,当您调用d
时,它将检查作用域,并看到作用域是testobj
。由于testobj
有一个c
函数,它将调用并返回该函数。
我把它放在一个jsFiddle来看看它的作用
可以了((http://jsfiddle.net/balintbako/n6YjE/):
)var testobj = {
a: 2,
b: 4,
c: function () {
alert(this.a + this.b);
},
d: function () {
this.c();
}
};
testobj.c();
我相信你想看到d中c的返回值。
在这种情况下,我在对象之后赋值d,因为它在var ob = {...}
中没有任何实例,因为它仍在创建中。
var testobj = {
a: 2,
b: 4,
c: function() {
return this.a * this.b;
},
e: function() {
if (this.d) {
console.log("SUCCESS");
console.log(this.d);
} else {
console.log("ERROR");
}
}
}
testobj.d = testobj.c();
alert(testobj.d);
alert(testobj.c());
相关文章:
- offsetLeft Javascript属性需要更多时间
- JavaScript 属性继承
- Javascript 属性名称上的正则表达式
- 如何更改对 javascript 属性的调用的范围/上下文
- 使用相同的名称访问Javascript属性
- 为什么某些Javascript属性没有在调试器中以交互方式显示
- 隐藏元素:Javascript属性和CSS样式之间的区别
- 用函数重写Javascript属性
- Javascript属性访问速度:var.properties与var[“属性”]的区别
- 在读取之前设置未定义的 javascript 属性
- 使用字符串选择器设置javascript属性
- 按名称将文本替换为 JavaScript 属性的内容
- 来自变量的 Javascript 属性
- 从 javascript 属性和值中删除
- Javascript:属性描述符和内置属性属性之间的关系是什么
- JavaScript 属性重复 [点与括号]....
- Jquery 属性代码到 Javascript 属性代码
- JavaScript属性存储它
- 带有 setter 方法的 JavaScript 属性不是真正的属性
- 使用 getter/setter 覆盖 javascript 属性,同时仍访问底层属性