Javascript 使用原型方法与普通函数的区别
我有以下几种情况。我正在定义一个新类Javascript 使用原型方法与普通函数的区别,javascript,node.js,Javascript,Node.js,我有以下几种情况。我正在定义一个新类C,并将其导出为节点模块。我想知道使用普通函数(方法1)与使用原型方法(方法2)有什么区别 使用方法1的助手似乎没有全局名称空间污染问题(因为它位于模块内部),但是方法2实际上可以通过原型继承将一些内部内容(这里是助手方法)公开给外部 是否存在其他差异(性能等)?我通常应该使用哪一种 C.prototype.func=function(){ // need to call helper, use either // helper(); // or
C
,并将其导出为节点
模块。我想知道使用普通函数(方法1
)与使用原型方法(方法2
)有什么区别
使用方法1
的助手似乎没有全局名称空间污染问题(因为它位于模块内部),但是方法2
实际上可以通过原型继承将一些内部内容(这里是助手
方法)公开给外部
是否存在其他差异(性能等)?我通常应该使用哪一种
C.prototype.func=function(){
// need to call helper, use either
// helper();
// or
// this.helper();
}
function helper(){// method 1
}
C.prototype.helper=function(){// method 2
}
module.exports = C;
如果将helper()
定义为模块内的函数,则它在以下方面与方法不同:
helper()
时,该指针将不会指向相关对象,因此您将无法访问成员变量
helper()
不是对象上的方法,因此其他人不能以这种方式使用它因此,选择哪一个取决于需求和情况。场景是显而易见的 1) 您只需要在用于 其他部分,不希望暴露在外面,只是定义了 局部函数 2) 如果要通过模块的引用使用函数,请使用 module.prototype将其暴露在外部,以便您可以使用, 修改…它 例如,原型是javascript对象的一个非常重要的属性
您可以参考FYI的详细信息,您不需要像您所展示的那样在原型上定义功能。它应该是
C.prototype.helper=function(){…}