我想说:
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;
};
如何实现这一目标?
答案 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();