js中的构造函数模式, 原型模式和寄生构造函数模式

1. 构造函数模式

function Foo(arg) {
    this.xxx = arg;
    this.xxx = xxx;
} 

构造函数模式的函数体在每次new对象的时候都会执行一遍. new的话, 会自身创建一个作用域, 里面的this指向这个, 若是没有new, 直接执行, 那this得根据具体执行上下文确定. 这种方法会导致方法具有多个实例, 浪费内存.

2. 原型模式

function Foo() {
}

Foo.prototype = {
    xxx: xxx,
    xxx: xxx
}

原型模式相对于构造模式来说是没有构造参数的. 而且这种方法不具有实例私有的属性.

3. 构造函数模式和原型模式两者适用范围与组合使用

最好两者结合适用, 构造函数模式负责创建实例属性, 原型模式负责创建方法和共享的属性, 这样能最大限度节省内存.

4. 寄生构造函数模式

这种方法说白了就是在构造函数模式上寄生了原型模式, 通过判断是否已存在某个原型属性, 来判断是否需要执行原型初始化.

function Person(name) {
    this.name = name;
   if(typeof this.sayName != 'function') {
       Person.prototype.sayName = function () {
            alert(this.name);
       } 
   } 
}

你可能感兴趣的:(js中的构造函数模式, 原型模式和寄生构造函数模式)