0

让我用我在这里的简短代码介绍这个问题:

function SomeObject() {
// Personaly I call this part initialization...
this.anything = "anything";

// ... but here somebody call function init...
this.init();
}

// ... which is declared there...
SomeObject.prototype.init = function () {

// ... and contains more initialization. 

}

现在问题来了: 这个init函数的实现有什么好处?

我看到的唯一好处是您可以init稍后在实例上使用函数并重新初始化它的一些属性和其他东西。但是在我拥有的代码中,这样做没有意义。更重要的是,如果我这样做,它会破坏很多东西。从那以后,我不知道除了这个实现之外是否有任何区别:

function SomeObject() {
    init.call(this);
}

function init() {        
}

此外,我不知道为什么要将构造函数分成更多部分。所以我认为(有那种感觉)我真的不得不错过一些重要的好处或自然。

4

1 回答 1

0

简短的回答是“OOP”。

在第二种情况下,您必须使用call来提供上下文,并且您没有暗示该函数将用于SomeObject. 当然,函数不是继承的。

对于像这个这样的“私有”函数,它并不重要,特别是如果它只在构造函数中使用(那么,真的需要一个函数吗?)。但是,如果必须从代码的其他部分使用该函数,则将函数附加到必须是调用上下文的对象上会使目的更清晰。

于 2013-11-04T12:29:44.110 回答