javascript:如何在方法和构造函数上下文中同时调用函数?

时间:2014-08-25 10:29:15

标签: javascript

我想说:

 var b = new a.B();

其中a是一个对象。我希望方法B能够引用调用对象a和新创建的对象b

通常,第一个引用是通过方法上下文实现的,第二个是通过构造函数上下文实现的。两个上下文都将引用的对象绑定到this关键字。

但是,如何在一次调用B期间如何引用它们?

使用案例

假设我已经编写了一个库,允许用户在我的网页中轻松插入我的小部件。加载后,我的库将一个名称导出到全局名称空间:Toolbar,这是一个构造函数,用于在用户的网页元素中创建我的小部件,名为parent_dom_element

var toolbar1 = new Toolbar(parent_dom_element);

现在,在我的小部件中,对应于toolbar1对象,用户可以创建如下的子小部件:

var comment = new toolbar1.Comment();

我希望构造函数Comment能够引用toolbar1对象并同时充当构造函数,如下所示:

Toolbar.prototype.Comment = function (toolbar, ){
    this.attr1 = toolbar.attr1;
};

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您必须在工具栏上下文中定义指向'this'的var,并在Toolbar构造函数中定义Comment构造函数。这样,Comment构造函数将可以访问“toolbar”变量。

var Toolbar = function () {
    var toolbar = this;  // toolbar = Toolbar instance
    this.attr1 = "";     // this = Toolbar instance

    this.Comment = function () {
        this.attr1 = toolbar.attr1;  // this = Comment instance;
    };
};

var toolbar1 = new Toolbar();
var comment = new toolbar1.Comment();