// 1. 对象直接量
var obj1 = {}; //空对象
var obj2 = {
name: "ys",
age: 12
};
var obj3 = {
name: "ys",
age: 12,
like: {
drink: "water",
eat: "food"
}
};
// 2.new创建对象
var obj1 = new Object();
var obj2 = new Array();
var obj3 = new Date();
var obj4 = new RegExp("ys");
// 3.自定义对象
function Person(name, age) {
this.name = name;
this.age = age;
}
var obj1 = new Person("ys", 12);
// 4.Object.create()创建
// 该方法有两个参数,我就只解释下第一参数,第二个参数不常用(对对象的属性进行进一步描述)
// 第一个参数:传入要继承的原型(prototype)对象
// 怎样理解这句话呢?
var obj1 = Object.create({
name: "ys",
age: 12
});
console.log(obj1); //{}
console.log(obj1.age); //12
// obj1为{},为什么可以访问到属性值呢?我们理解下第一个参数的意义“传入要继承的原型对象”
// console.log(obj1.__proto__); //Object {name: "ys", age: 12}
// 对象本身为空,但是原型链上数据不为空,存在obj1.age,所以可以访问到