在javascript中按名称访问函数的包含对象

在javascript中按名称访问函数的包含对象,javascript,closures,this,Javascript,Closures,This,我想知道是否有人可以评论(引用)以下是正确的还是在某个时候会失败 var myObj = { x: 10, getX: function getX() { return myObj.x; } } 我相信这是返回x的更好方法,但是我的一位同事更喜欢绑定到这个.x并使用它 var myObj = { x: 10, getX: function getX() { var thisObj = this; r

我想知道是否有人可以评论(引用)以下是正确的还是在某个时候会失败

var myObj = {  
    x: 10,
    getX: function getX() {
        return myObj.x;
    }
}
我相信这是返回x的更好方法,但是我的一位同事更喜欢绑定到这个.x并使用它

var myObj = {  
    x: 10,
    getX: function getX() {
        var thisObj = this;
        return thisObj.x;
    }
}

我找不到任何支持我的具体例子(可能是因为我错了?)

我认为第二种解决方案更好

考虑这一点:

var myObj = {  
  x: 10,
  getX: function getX() {
    return myObj.x;
  }
}

var anotherObj = myObj;

myObj.getX();      // return myObj.x
anotherObj.getX(); // ERROR, never return anotherObj.x
但是如果您使用
这个
,您就不会有问题了

var myObj={
x:10,
getX:function(){//您可能不需要函数名
归还这个.x;
}
};
var anotherObj=myObj;
console.log(myObj.getX());//返回myObj.x

console.log(anotherObj.getX());//return anotherObj.x
谢谢您的回答,我确实发现这种方法存在一个问题,即将函数作为参数传递到窗口时会像这样绑定到窗口,这是通过使用bind或apply解决的,但需要注意