可以从以下两种类型的javascript类创建(OOPs概念)中帮助哪一个是最佳用法/实现?
方式1:
var MyClassName = function(){
// private variables
// private functions
return {
// public functions
pubFunctionName1: function(){
},
pubFunctionName2: function(){
}
}
}
用法:
myClass = new MyClass();
myClass.pubFunctionName1();
方式2:
function MyClass(){
//public variables and functions
this.publicVariable = "";
this.publicFunctionName3 = function(){
}
// private functions
function privateFunctionName3(){
}
}
用途:
var myClass = new MyClass();
myClass.publicFunctionName3();
答案 0 :(得分:1)
这通常取决于您自己的品味以及您希望如何使用该课程...但几个月前我问自己一个类似的问题并找到了有用的description where different ways of defining classes in Javascript are explained。这也可能有助于向您澄清事情......
答案 1 :(得分:1)
结帐book
它有关于构造函数的特定章节,非常有用。
如果简短:在你提出的两种方法中,你将失去与prototype
的联系,所以你需要决定是否有必要。
另一个提案可能是:
/* self-inited constructor */
var Cat = function () {
if (!(this instanceof Cat)) {
return new Cat();
}
this.name = 'Tom';
};
Cat.prototype.meow = true;
var persian = new Cat();
var cheshire = Cat();
console.log(persian.name); // "Tom"
console.log(cheshire.name); // "Tom"
console.log(persian.meow); // true
console.log(cheshire.meow); // true