在这个例子中。我需要从对象函数更新好友列表。
var MyClass = function () {
this.friends = [];
this.runtime = {
add: function (name) {
this.friends.push(name);
}
}
};
MyClass.prototype.AddFriend = function (name) {
this.runtime.add(name);
};
MyClass.prototype.GetFriends = function () {
return this.friends;
};
怎么可能?
答案 0 :(得分:1)
就像我在评论中所说的那样,使用this.friends.push(name)
更有意义,但是如果你真的必须使用那个奇怪的运行时函数,那么你需要将this
的副本保存到新变量:
var MyClass = function () {
var _this = this;
this.friends = [];
this.runtime = {
add: function (name) {
_this.friends.push(name);
}
}
};
答案 1 :(得分:1)
您也可以使用bind()方法:
var MyClass = function () {
this.friends = [];
this.runtime = {
add: function (name) {
this.friends.push(name);
}.bind(this)
}
};
MyClass.prototype.AddFriend = function (name) {
this.runtime.add(name);
};
MyClass.prototype.GetFriends = function () {
return this.friends;
};
在此处详细了解:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind