问一个关于prototype的问题
发布于 13 小时前 作者 imhered 94 次浏览 来自 问答

第一种写法:A.js

function Test(){}
Test.prototype.do1=function(){
	//do1......
}
Test.prototype.do2=function(){
	//do2......
}
module.exports = Test;
//调用
var Test = require('./A.js');
var test = new Test();
test.do1();
test.do2();

另一种写法:B.js

exports.do1=function(){
	//do1......
}
exports.do2=function(){
	//do2......
}
//调用
var test = require('./B.js');
test.do1();
test.do2();

上面两种写法单从外表看好像就是调用的时候不同,其他都差不多。 我想问问这2者具体有什么区别,什么场合下用哪一种,或者是用法没区别,我一个项目全部都写成A或者全写成B,有影响吗? 刚接触js不就,还望各位多多指教!

1 回复

第一种写法是把函数当作类,用于创建对象,然后用对象调用其类的方法;第二种直接把函数导出了;如果你Test函数中有私有变量,比如

function Test(a){
	this.a =a
}
//第一种方法可以在 do1函数中通过 this.a访问那个变量

第二种是CommonJS的写法,如果在浏览器的话,不直接支持

回到顶部