将方法绑定到返回其他对象的对象

时间:2016-06-09 08:41:28

标签: javascript object activexobject

我们说我有以下课程:

var ie = function() {
    return new ActiveXObject('InternetExplorer.Application');
}

现在我想为IE的Navigate方法添加别名,例如:

ie.prototype.goto = function() {
    this.Navigate('http://www.google.com'); // where 'this' should be ie
}

当然,这不起作用,我认为是因为班级不知道它的类型改变"在它返回之前。那么如何将.goto()方法绑定到[Internet Explorer]而不是[object object]?根据我的理解,当call(),apply()或bind()派上用场时,我真的不知道如何使用它们。

1 个答案:

答案 0 :(得分:1)

您可以在返回对象之前将其添加到对象中:

var ie = function() {
    var ieObj = new ActiveXObject('InternetExplorer.Application');
    ieObj.goto = function () { ieObj.Navigate('http://www.google.com'); };

    return ieObj;
};

var nav = ie();
nav.goto();

new ActiveXObject()没有返回ActiveXObject的实例,因此您无法修改原型,以便让您自动创建的所有实例都具有特定方法。即使您可以这样做,也意味着您创建的所有 ActiveXObject将拥有该方法,这不是理想的情况。