Javascript 如何使用此函数从对象访问构造函数
在这个例子中。我需要从对象函数更新朋友列表Javascript 如何使用此函数从对象访问构造函数,javascript,function,object,Javascript,Function,Object,在这个例子中。我需要从对象函数更新朋友列表 var MyClass = function () { this.friends = []; this.runtime = { add: function (name) { this.friends.push(name); } } }; MyClass.prototype.AddFriend = function (name) { this.runtime.add
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;
};
这是怎么可能的?就像我在评论中说的,使用
this.friends.push(name)
更有意义,但是如果你真的必须使用这个奇怪的运行时函数,那么你需要将this
的副本保存到一个新变量中:
var MyClass = function () {
var _this = this;
this.friends = [];
this.runtime = {
add: function (name) {
_this.friends.push(name);
}
}
};
您也可以使用bind()方法:
请在此处阅读更多信息:Urg。为什么不从该功能中执行
this.friends.push(name)
?你在那里遇到了各种各样的疯狂的背景问题。@Andy,我知道。但在我的大项目中。我无法更改总代码:(没问题。虽然@Andy正确地指出,你实际上应该使用这个.friends.push(name)…但是如果你真的无法避免像那样定义你的函数范围,那么它就会完成任务。
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;
};