var myObject = {
name: function() {
return "Michael";
}(),
age: 28,
sayName: function() {
alert(this.name + ":" + this.age);
}(),
specialFunction: function() {
myObject = this;
if (this == myObject) altert(console.log(this.sayName));
}
}()
};
我试图从同一个对象中的其他方法调用对象的方法,但我只是得到undefined
。
我认为允许内部范围对象访问外部范围对象,但是这种情况忽略了该规则。
答案 0 :(得分:0)
试试这个
(function(window){
var myObject = {
name: function(){
return "Michael";
}(),
age: 28,
sayName: function(){
alert(this.name + ":" + this.age);
},
specialFunction : function(){
myObject=this;
if(this==myObject)
alert(console.log(this.sayName));
}
}
window.myObject = myObject;
})(window);
myObject.sayName();

发生了什么,当你调用sayName函数时,它会获得自己的执行环境并查找一个名为myObject的对象,该对象尚未定义。然后它在容器函数中查找此对象。所以我们要做的是定义并将此对象带入window对象并在那里调用该函数。这样它就能找到这个对象。