对象的创建模式

对象的创建模式

对象的创建模式有很多种,具体分为以下五种:

  • 方式一:Object构造函数模式
    • 创建Object对象,再添加方法与属性
    • 适用场景:起始时不确定对象内部数据
    • 问题:语句太多
var p  = new Object();
p = {};
p.name = "Key";
p.setName = function(name){
    this.name = name;
}
  • 方式二:对象字面量模式
    • 使用{}创建对象,同时指定属性和方法
    • 适用场景:起始时对象内部数据是确定的
    • 问题:如果创建多个对象,有重复代码
var p = {
    name:"Key",
    function setName(name){
        this.name = name;
    }
}
    p.setName("Tom");
  • 方式三:工厂模式
    • 使用函数动态创建对象
    • 适用场景:需要创建多个对象
    • 问题:对象没有一个具体的类型,都是Object类型
function ceatePerson(name){
    var p = {
        name:name;
        setName:function(name){
            this.name = name;
        }
    }
    return p;
}

var p = ceatePerson("Key");
console.log(p);
  • 方式四:自定义构造函数
    • 通过new创建对象
    • 适用场景:需要创建多个类型确定的对象
    • 问题:每个对象都有相同的数据,内存占用过多
function Person(name){
    this.name = name;
    this setName:function(name){
        this.name = name;
    }
}

var p = new Person("Key");
console.log(p);
  • 方式五:构造函数+原型的组合模式
    • 自定义构造函数,属性在函数中初始化。方法添加到原型上(比较规范化)
    • 适用场景:需要创建多个类型确定的对象,解决内存占用过多问题
function Person(name,age){
    this.name = name;
    this.age = age;
}
Person.prototype.setName = function(name){
    this.name = name;
}
var p = new Person("Key",99);
p.setName = "Tom";
console.log(p);

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

对象的继承 上一篇
关于运算符中null和undefined 下一篇