Javascript面向对象编程 -- 设想形式

写在前面:

之前的文章都是写组织函数,原型之类的。然则我们都晓得原型最大的长处也是瑕玷就是同享。也是我们最头疼的题目.
据同享的原因,致使许多开发者摒弃运用原型,由于每次实例化出的数据须要保存本身的特征,而不能同享。

组合组织函数+原型形式

处理组织传参和同享题目,能够组合组织函数+原型形式

function Box(name, age) {         //不同享的运用组织函数
this.name = name;
this.age = age;
this.fruits = ['apple', 'banana', 'orange'];
};
Box.prototype = {                   //同享的运用原型形式
    constructor: Box,               //强迫指向Box
    run: function() {
    return this.name + this.age + this.fruits;
        }
}

PS:这类形式也是最常见也是最经常使用的形式,这类夹杂形式很好的处理了传参和援用同享的大困难。 是建立对象比较好的要领。

动态原型形式

原型形式, 不论你是不是挪用了原型中的同享要领, 它都邑初始化原型中的要领, 而且在
声明一个对象时, 组织函数+原型部份让人觉得又很奇异, 最好就是把组织函数和原型封装
到一同。为了处理这个题目,我们能够运用动态原型形式

动态原型形式:

function Box(name ,age) {                 //将一切信息封装到函数体内
this.name = name;
this.age = age;
if (typeof this.run != 'function') {     //仅在第一次挪用的初始化
Box.prototype.run= function() {
return this.name;
  };
 }
}
var box = newBox('Lee', 3);
alert(box.run())

第一次挪用组织函数时, run()要领发明不存在,然后初始化原型。当第二次挪用,就不会初始化, 而且第二次建立新对象, 原型也不会再初始化了。 如许及得到了封装, 又完成了原型要领同享,而且属性都坚持自力.

注重:运用动态原型形式,万万不能运用字面量的体式格局重写原型,由于它会割断实例与新原型之间的联络!!!

这是Javascript OOP内里的个中两种设想形式,下一篇文章会讲寄生组织函数形式和稳妥组织函数形式。
另有最头疼的继续!

    原文作者:Brian_Lee
    原文地址: https://segmentfault.com/a/1190000009633414
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞