在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解决的,但需要注意