我正在尝试了解有关JavaScript OO编程的更多信息,但我看到了创建类“类”对象的冲突方法。我想知道这两种方法是否存在实质性差异:
方法1
function Person(name){
this.name = name;
this.setName = function(val){
this.name = val;
}
this.getName = function(){
return this.name
}
}
var John = new Person("John");
方法2
function Person(name){
var exports = {};
exports.name = name;
exports.setName = function(val){
this.name = val;
}
exports.getName = function(){
return this.name
}
return exports;
}
var Bob = Person("Bob");
我见过这两个用于创建复杂JavsScript对象的方法。我甚至看过大型JS插件,比如jQuery使用方法2而不是方法1来设置他们的jQuery函数。其中一种比其他方式更快或更有效吗?
答案 0 :(得分:7)
第一个创建类型为Person
的对象,而第二个创建类型为Object
的对象。第一个允许您将成员添加到Person
。
您可以将所有函数放在原型中,而不是为每个实例创建新函数:
function Person(name){
this.name = name;
}
Person.prototype = {
setName: function(val){
this.name = val;
},
getName: function(){
return this.name
}
}