javascript - 在创建对象时,JavaScript 中调用对象成员函数的正确方法是什么?

标签 javascript oop

所以我的情况是这样的

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/

相关文章:

python - 从 Entry 获取信息

c# - 具有必需类和多个可选类的 View 模型

javascript - 使用 jquery 将图像替换为文本

javascript - 如何集成 CouchApp、Node.JS、Sammy 和 Mustache

javascript - 如何在选择下拉菜单中设计有序列表

javascript - 无法显示 bootstrap UI 模态

php - MVC/PDO : how to build a model using PDO's prepared statements syntax?

javascript - 为什么 require.js 进入 head 标签

javascript - 除非设置为可写,否则无法覆盖 readOnly 可配置函数值对象原型(prototype)属性

ios - 将远程数据与本地对象映射/解耦