看起来有很多方法可以在Javascript中创建对象:
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
function person(){
this.firstName = 'first';
this.lastName = 'last';
this.age = 'age';
this.eyeColor = 'eyecolor';
}
person = (function () {
this.firstName = 'first';
this.lastName = 'last';
this.age = 'age';
this.eyeColor = 'eyecolor';
}();
有人可以帮我理解上面哪一项是最佳使用方法吗?
还有什么场景我们使用自调用函数?
答案 0 :(得分:2)
如果你想获得最大收益,你可以使用一个功能,它允许你设置"公共"和#34;私人"变量。例如:
function Person (name, age) {
var number = (Math.random() * 100) | 0;
// number is private; there's no way to access it outside
// of the scope of this function
var surpriseParty = new Date(Date.now() + number*24*3600*1000);
// we're throwing you a party within the next 100 days
this.name = name; // public
this.age = age; // public
return {
getName: function () { return name },
getAge: function () { return name },
getPartyDate: function () { return surpriseParty }
}
}
如上面代码所述,现在只能访问某些变量:
var p = new Person("royhowie", 18);
// p.getName() => "royhowie"
// p.name => "royhowie"
// p.getAge() => 18
// p.age => 18
// p.number => undefined
// p.surpriseParty => undefined
// p.getPartyDate() => date within the next 100 days
事实上,你应该使用最合适的法案。上面的方法是一种封装数据的简单方法,但如果您希望所有内容都是公共的,请使用普通对象语法:
var p = { name: "royhowie", age: 18, surpriseParty: new Date() };
我不推荐使用自动执行的匿名函数语法。您应该在其他地方声明该函数(至少用于调试);这至少可以让您选择创建该对象的两个不同实例。
答案 1 :(得分:0)
这个问题已经回答here,它正确地指出没有推荐的创建JavaScript对象的方法。这完全取决于您的使用案例。
根据W3schools,有一种创建对象的标准方法:
创建"对象类型的标准方法"是使用对象构造函数。这是一个例子:
function person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
var myFather = new person("John", "Doe", 50, "blue");
var myMother = new person("Sally", "Rally", 48, "green");
希望这有帮助! :)