所以我的情况是这样的
function MyObject ( data )
{
// ...
this.MyMemberFunction = function ( ) { /* ... */ };
}
并且我希望在创建新的 MyObject
时调用 MyMemberFunction
。所以我想要相当于
var myObjectInstance = new MyObject(allData);
myObjectInstance.MyMemberFunction();
或
function MyObject ( data )
{
// ...
this.MyMemberFunction = function ( ) { /* ... */ };
this.MyMemberFunction();
}
var myObjectInstance = new MyObject(allData);
但我想知道是否有比这两种方法更好、更合适的方法?
最佳答案
对象的构造函数是您应该将对象初始化为正常工作顺序的地方,也是您应该放置所有新创建对象时应调用的任何代码的地方。一个对象有一个 .init()
方法是很常见的,该方法从为该对象执行通用设置代码的构造函数中调用。
因此,如果它包含应始终在所有新对象上调用的代码,那么在构造函数中调用您的方法是正确的做法。
对于定义方法的位置,您确实有另一种选择。将它放在原型(prototype)上而不是在构造函数中分配它可能更有意义。
function MyObject ( data ) {
// ...
this.myMemberFunction();
}
MyObject.prototype.myMemberFunction = function ( ) { /* ... */ };
var myObjectInstance = new MyObject(allData);
注意:Javascript 中的一个常见约定是构造函数以大写字母开头,而常规函数或成员以小写字母开头。由于应该以不同方式调用构造函数(使用 new
),因此这对它们进行了不同的标识。
注意:如果你的初始化方法不需要是一个可以被外界调用的公共(public)方法,那么它就不必是对象上的实际公共(public)方法。您可以将代码内联到构造函数或仅在对象文件范围内可用的私有(private)函数中。
关于javascript - 在创建对象时,JavaScript 中调用对象成员函数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34361431/