- 对面字面量。
-
注意:在js中根本不存在真正的空对象!即使是最简单的{}对象也会包含从Object.prototype继承而来的属性和方法(toString()、valueOf()等),所谓的"空对象"只是说这个对象没有自有属性,不考虑它是否有从原型链上继承而来的属性。
-
可以直接在表达式里面定义属性和方法。
-
对象字面量运行速度更快,因为它们可以在解析的时候被优化——它们不需要"作用域解析"!。
- new:
-
必须先定义一个空对象,再给它定义属性和方法。
-
可以给构造函数传入参数达到初始化的目的。
-
当有参数传入构造函数的时候,"空对象"继承的属性和方法也会随之改变。
-
例如传入数字,就会继承Number的方法和属性,传入字符串,就会继承String的方法和属性。
-
Object()构造函数可以接收参数,通过这个参数可以把对象实例的创建过程委托给另一个内置构造函数(Number()、String()等),并返回另一个对象实例。
-
使用自定义构造函数创建对象,可以通过传参添加属性和方法,当需要定义的同类对象较多时,节省了定义对象的代码量,并且使对象属性和方法的结构更加清晰 。
3.Object.creat(null):
- Object.creat(null) 创建的对象除了添加的属性之外,原型链上没有任何属性。
- creat函数是创建一个以传入对象为原型对象的对象的函数。
- 可以添加属性,可以访问,但是没有继承Object的属性和方法。
- 不可以自动转换对象。
4.null:
- 不那定义属性,只能直接给它赋值。