我一直在处理对象文字已有一段时间了,但是当我使用undefined
访问它时对象属性为什么返回this
时我很难过这里是我正在尝试的一个例子做...
var x = (function(){
return{
a: "1",
b : this.a
};
})();
console.log(x.b);
我在这里做错了什么?
答案 0 :(得分:1)
this
的值由如何调用当前正在执行的函数确定。
在这种情况下,它可能是window
(如果您在浏览器中运行而不是严格模式)
在构造对象时,无法引用使用对象文字构造的对象。
你必须分两步完成。
var x = (function(){
var obj = {
a: "1",
};
obj.b = obj.a;
return obj;
})();
console.log(x.b);
答案 1 :(得分:0)
使用函数返回对象,该对象将调用对象分配给this
var x = (function(){
return{
a: "1",
b : function(){return this.a;}
};
})();
JS小提琴: http://jsfiddle.net/AFtT5/1/
您还可以使用get方法:
var x = (function(){
return{
a: "1",
get b (){return this.a;}
};
})();
console.log(x.b);
JS小提琴: http://jsfiddle.net/AFtT5/2/