object类 true object 编写 clas scrip type size fun
1.通过new Object创建对象
- 作用范围:
- 用于属性名字和属性值不能确定的地方
- 优点:
- 编写方便
- 缺点:
- 1.需要写大量代码
- 2.创建出来的对象都是Object对象
- var obj = new Object();
- obj.name = "张三"
- obj.age = 12;
- obj.setName=function (name) {
- this.name=name;
- }
- log(obj.name, obj.age);
2.使用{}创建对象
- 适用场景:
- 适用于确定对象,确定方法,不需要创建很多个对象
- 优点:
- 书写方便
- 缺点:
- 1.不利于扩展性
- 2.每次创建对象还需要有很多重复性的工作
- 3.浪费内存
- var obj = {
- name: "张三",
- age: 12,
- setName: function(name) {
- this.name = name;
- }
- }
- log(obj.name, obj.age)
3.使用工厂方法创建对象
- 适用场景:
- 用于有固定的属性的对象进行创建,不用在意其创建的对象是不是Object类型还是自定义类型
- 优点:
- 创建速度快,代码便捷
- 缺点:
- 浪费内存
- 所有实例都是Object的实例对象
- function createPerson(name, age) {
- return {
- name: name,
- age: age,
- setName: function(name) {
- this.name = name;
- }
- }
- }
- var p = createPerson("张三", 12);
- log(p.name, p.age);
4.使用函数创建对象
- 适用范围:
- 用于创建多个对象,并且有自己的实例对象属性
- 优点:
- 不是一直都是Object对象,可以是自己创建的对象
- 缺点:
- 1.浪费内存,特别是公用方法
- function Person(name, age) {
- this.name = name;
- this.age = age;
- this.setName = function(name) {
- this.name = name;
- }
- }
- var p = new Person("张三", 11);
- log(p.name, p.age)
5.原型链和函数进行创建对象
- 适用场景:
- 用于对于有公共方法的对象
- 优点:
- 优化内存,将方法放在了prototype中
- 缺点:
- 未涉及字段
- function Person(name, age) {
- this.name = name;
- this.age = age;
- }
- Person.prototype.setName = function(name) {
- this.name = name;
- }
- var p = new Person("小米", 12);
- log(p);
- log(p instanceof Person)
js创建对象的几种方式
来源: http://www.bubuko.com/infodetail-2323059.html