让我用我在这里的简短代码介绍这个问题:
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() {
}
此外,我不知道为什么要将构造函数分成更多部分。所以我认为(有这种感觉)我真的不得不错过一些重要的好处或自然。
答案 0 :(得分:0)
简短的回答是“OOP”。
在第二种情况下,您必须使用call
来提供上下文,并且您没有暗示该函数将用于SomeObject
的实例。当然,该功能不是继承的。
对于像这样的“私有”函数,它并不重要,特别是如果它仅在构造函数中使用(那么,是否真的需要一个函数?)。但是如果必须从代码的其他部分使用该函数,那么将函数附加到必须是调用上下文的对象上会使目的更清晰。