JavaScript创建对象的方法

2018-05-16  本文已影响0人  cycrab

一、工厂模式

function person(name, age) {
    var a = new Object();
    a.name = name;
    a.age = age;
    a.sayName = function() {
        alert(this.name)
    }
    return a;
 }
person("zhangsan", 20);

工厂模式的出现解决了重复通过字面量创建的方式

二、构造函数

function Person(name, age) {
    this.name = name;
    this.age = age;
    this.sayName = function() {
        alert(this.name);
    }
}
var person1 = new Person("zhangsan", 20);

构造函数的出现简化工厂模式:
1.没有显示创建对象的过程;
2.没有return返回;
3.执行环境的this指向构造函数的实例,将属性和方法赋给this对象;

三、原型模式

       创建的函数都有prototype属性(原型),这个属性其实是一个指针,指向一个原型对象,当我们通过构造函数new一个实例对象的时候,其实这个新创建对象的方法和属性都可以从prototype获取,原型对象最大的好处就是共享。

function Person() {}
Person.prototype.name = "zhangsan";
Person.prototype.age = "20";
Person.prototype.sayName = function() {
    alert(this.name);
}

       优点:相比于构造函数和工厂模式,原型模式创建的属性和方法都是在原型对象上的,所以在new更多的实例对象,他的属性和方法都是一个,避免了构造函数实例对象时都重新创建一个方法;
       缺点:创建的属性和方法都是固定的,会带来不便;

四、组合方法

function Person(name, age) {
    this.name = name;
    this.age = age;
}
Person.prototype.sayName = function() {
    alert(this.name);
}

现阶段用的最多的方式

上一篇 下一篇

猜你喜欢

热点阅读