如何使用它从对象访问构造函数

时间:2015-04-07 13:21:40

标签: 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(name);
};

MyClass.prototype.GetFriends = function () {
    return this.friends;
};

怎么可能?

2 个答案:

答案 0 :(得分:1)

就像我在评论中所说的那样,使用this.friends.push(name)更有意义,但是如果你真的必须使用那个奇怪的运行时函数,那么你需要将this的副本保存到新变量:

var MyClass = function () {
    var _this = this;
    this.friends = [];
    this.runtime = {
        add: function (name) {
            _this.friends.push(name);
        }
    }
};

DEMO

答案 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