1. 动态添加对象的属性和方法
// start with an empty object var dog = {}; // add one property dog.name = "Benji"; // now add a method dog.getName = function () { return dog.name; };
2. 一次性创建对象
var dog = { name: "Benji", getName: function () { return this.name; } };
3. 使用内建的构造函数
// one way -- using a literal var car = {goes: "far"}; // another way -- using a built-in constructor // warning: this is an antipattern var car = new Object(); car.goes = "far";
literal notation的优点:
1)it’s shorter to type
2)it emphasizes that objects are simply mutable hashes and not something that needs to be baked from a “recipe” (from a class)
3) faster
// an empty object var o = new Object(); console.log(o.constructor === Object); // true // a number object var o = new Object(1); console.log(o.constructor === Number); // true console.log(o.toFixed(2)); // "1.00" // a string object var o = new Object("I am a string"); console.log(o.constructor === String); // true // normal objects don't have a substring() // method but string objects do console.log(typeof o.substring); // "function" // a boolean object var o = new Object(true); console.log(o.constructor === Boolean); // true