js原型一(概念と役割)

1644 ワード

原型の概念と役割
原型の概念を説明する前に、下記のコードをご覧ください.
      function Person(name, age) {
           this.name = name;
           this.age = age;
           this.sayHi = function() {
           console.log('Hi, meimei,go play.');
           };      
       }

       var zs = new Person('  ', 19);
       var ls = new Person('  ', 20);

       zs.sayHi();
       ls.sayHi();

       console.log(ls.sayHi === zs.sayHi); //false
これはメモリの中に2つのロジック機能が同じsayHi関数が存在していることを示しています.これは冗長なコードであり、メモリの無駄をもたらします.一方、ユーザーが大量のアプリケーションを開くと、私たちのホームページにはほとんどメモリを残してくれます.この時、私たちはこのsayHi関数を原型に置く必要があります.原型はデータを共有する方法を置くところです.
プロトタイプの概念は、プロトタイプとは、関数のプロトタイプ属性を参照したオブジェクトのことで、このオブジェクトがプロトタイプと定義されています.原型の役割1:オブジェクト間のデータ共有を実現します.2.es 6の前に、クラスがない場合は、オブジェクトに向かってシミュレーションし、構造関数に属性があり、原型に公有属性を置くのが一般的です.
この時、上記のコードは次のように改造できます.
      function Person(name, age) {
            this.name = name;
            this.age = age;         
        }

        Person.prototype.sayHi = function() {
            console.log('Hi, meimei,go play.');
        };

        var zs = new Person('  ', 19);
        var ls = new Person('  ', 20);

        zs.sayHi();
        ls.sayHi();

        console.log(ls.sayHi === zs.sayHi); //true
*原型の取得方法:1.関数.prototype;2.対象._プロト(現在のブラウザがサポートされていない場合、プロトはオブジェクトの構造関数を通じて探します.constructor.prototype;プロトタイプ自体は対象です.
また、es 5には、構造関数などのプロトタイプを書く必要がない、より簡単なオブジェクト作成方法が提供されています.
var parent = {say: function() {console.log('nihao');}};

var np = Object.create(parent);

//           
function F() {}
F.prototype = parent;
var np = new F;