到目前为止,我看到了三种在 JavaScript 中创建对象的方法。哪种方式最适合创建对象,为什么?
我还看到,在所有这些示例中,关键字var都没有在属性之前使用——为什么?var属性是变量,是不是不需要在属性名前声明?
var
在第二种和第三种方式中,对象的名称是大写的,而在第一种方式中,对象的名称是小写的。我们应该为对象名称使用什么大小写?
function person(fname, lname, age, eyecolor){ this.firstname = fname; this.lastname = lname; this.age = age; this.eyecolor = eyecolor; } myFather = new person("John", "Doe", 50, "blue"); document.write(myFather.firstname + " is " + myFather.age + " years old.");
var Robot = { metal: "Titanium", killAllHumans: function(){ alert("Exterminate!"); } }; Robot.killAllHumans();
var NewObject = {}; NewObject['property1'] = value; NewObject['property2'] = value; NewObject['method'] = function(){ /* function code here */ }
没有 最好 的方法,这取决于您的用例。
Person
更新: 根据第三种方式的要求示例。
相关属性:
以下不作为this不 参考 。book无法使用对象字面量中其他属性的值来初始化属性:
this
book
var book = { price: somePrice * discount, pages: 500, pricePerPage: this.price / this.pages };
相反,你可以这样做:
var book = { price: somePrice * discount, pages: 500 }; book.pricePerPage = book.price / book.pages; // or book['pricePerPage'] = book.price / book.pages;
动态属性名称:
如果属性名称存储在某个变量中或通过某个表达式创建,则必须使用括号表示法:
var name = 'propertyName'; // the property will be `name`, not `propertyName` var obj = { name: 42 }; // same here obj.name = 42; // this works, it will set `propertyName` obj[name] = 42;