js–对象创建的几种方式
一、字面量创建
1、创建的语法:{}
2、设置内容的语法:(1)对象.属性 = 要设置的内容 (2) 或创建时就在{}里设置内容
3、获取内容:(1)对象.属性 (2)当目前的属性名不是一个具体的值,是一个变量时:对象[变量]
二、内置构造函数创建
1、创建的语法:new 操作符 + Object()
2、设置内容的语法:对象.属性 = 要设置的内容
3、获取内容:对象.属性
用前两种方式实现某个相同的功能要创建多个对象时,会产生大量重复属性和方法。如下例子想要完成多人的自我介绍:
为了解决大量重复代码产生,工厂模式被开发了。
三、工厂模式创建
工厂模式解决了重复实例化多个对象的问题,但没有解决对象识别的问题。也就是对象的类型都是Object,因此出现了构造函数模式
四、自定义构造函数创建
多次new同一个构造函数时,会在内存中产生了多个同名功能,但它们来自于同一个模板,浪费内存。为了解决构造函数的缺点可以让我们更合理、方便的给实例添加方法否则构造函数只能给实例添加属性,不能合理的添加方法,因此原型出现了。
五、原型模式
1.在使用构造函数方式创建对象时:
(1) 将 将来的属性,写在构造函数内部,通过this绑定给将来的实例
(2) 将 将来的方法,写在构造函数的原型上,会自动被将来的实例获取。
2.自定义构造函数时new的的原理:
(1)创建一个新对象
(2)改变函数内的this指向,为这个新对象
(3)执行函数内的代码,并将新对象的__proto__指向该函数的prototype
(4)检查函数是否主动返回对象,如果没有,则返回这个新对象