this.objectProperty在对象文字中未定义

时间:2013-12-18 11:30:23

标签: javascript oop object-literal

我一直在处理对象文字已有一段时间了,但是当我使用undefined访问它时对象属性为什么返回this时我很难过这里是我正在尝试的一个例子做...

var x = (function(){
    return{
        a: "1",
        b : this.a
    };
})();

console.log(x.b);

我在这里做错了什么?

2 个答案:

答案 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/