我对 JS 中的 OOP 有点陌生。我想知道为什么在创建子对象时,这在第二级子对象之后停止引用主对象。
function Clase()
{
this.__construct = function()
{
this.paginator();
alert('__construct finished');
};
this.paginator = function()
{
this.paginator.title = function()
{
this.paginator.title.set_offsets = function()
{
alert('paginator.title.set_offsets executed!');
};
};
this.paginator.title(); //instantiating
alert('subobject paginator created');
};
this.__construct();
}
var instancia = new Clase();
instancia.paginator.title.set_offsets();
错误是:this.paginator 未定义。
现在,如果我使用闭包,它可以完美运行:
function Clase()
{
self = this;
this.__construct = function()
{
this.paginator();
alert('__construct finished');
};
this.paginator = function()
{
self.paginator.title = function()
{
self.paginator.title.set_offsets = function()
{
alert('instancia.paginator.title.set_offsets() executed');
};
};
self.paginator.title();
alert('this.paginator created');
};
this.__construct();
}
var instancia = new Clase();
instancia.paginator.title.set_offsets();
因此,AFAIK 在某个时间点之后,“this”停止引用“Clase”类并引用其他内容。如果是这样,以这种方式使用闭包是一种好习惯吗?
以 self = this 开始课程是否也正确?从那时起只使用“自我”?例如:http: //jsfiddle.net/byGRX/