1.字面量创建方式
优点:语句少
缺点:会有重复方法和属性
let obj = {name: "Tom", age: 2, sad: true, addr: null}
console.log(obj)
//{name: 'Tom', age: 2, sad: true, addr: null}
2.new创建方式
内置对象Object创建
优点:适合不确定对象属性方法的场景
缺点:语句太多
let obj1 = new Object()
//undefined
obj1
//{}[[Prototype]]: Object
obj1.name = "Tom"
//'Tom'
obj1.age = 2
//2
obj1.sad = true
//true
obj1.addr = null
//null
obj1.say = function () {console.log("good!!")}
//ƒ () {console.log("good!!")}
obj1
//{name: 'Tom', age: 2, sad: true, addr: null, say: ƒ}
obj1.say()
//good!!
工厂模式构造函数创建
优点:可以创建多个对象
缺点:没有具体类型,都是object对象
function Person(){
this.name = "Tom";
this.age = 2;
this.sad = true;
this.addr = null;
this.say = function () {
console.log("good!!!?");
}
}
//undefined
let obj2 = new Person()
//undefined
obj2
//Person {name: 'Tom', age: 2, sad: true, addr: null, say: ƒ}
obj2.say
//ƒ () {
// console.log("good!!!?");
// }
obj2.say()
// good!!!?
//undefined
构造函数执行步骤
- new运算符在内存中创建一个新的空对象
- this指向空对象(new一个对象,赋值给一值,这个值是这个对象的一个例子(实例))
- 执行构造函数里面的内容
- 使用new会自动返回这个新对象(不使用return,自动返回一个对象,以键值对的结果给对象)









网友评论