在这种情况下,init()函数如何工作

时间:2013-11-04 12:27:42

标签: javascript

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

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() {        
}

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

1 个答案:

答案 0 :(得分:0)

简短的回答是“OOP”。

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

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