JavaScriptのオブジェクト間のいくつかの利点と欠点を作成します

JavaScriptの一般的なオブジェクトが作成するには、いくつかの方法があります。Objectコンストラクタを、リテラル、パターン、植物、パターン、カスタムコンストラクタモードに加え、プロトタイプコンストラクタの組み合わせモードオブジェクト、彼らはそれぞれ独自の長所と短所と利用シナリオを持っています。

1.オブジェクト・モデルのコンストラクタ

  • 使用シナリオ:オブジェクト内の初期不確実なデータ。
  • 短所:あまりにも多くの文
     var p = new Object()
        p.name = 'tom'
        p.age = 12
        p.steName = function (name) {
            this.name = name
        }

2.オブジェクトリテラルモード

  • アプリケーションシナリオ:開始時に決定されたオブジェクトデータ。
  • 短所:複数のオブジェクトを作成する場合は、コードを複製します。
var p = {
            name: 'jack',
            age: 13,
            setName: function (name) {
                this.name = name
            }
        }

3.ファクトリパターン

  • アプリケーションシナリオ:複数のオブジェクトを作成する必要があります。
  • 短所:オブジェクトは、オブジェクトタイプの特定のタイプを持っていません。
function createPerson (name,age) { //返回一个对象的函数就是工厂函数
            var obj = {
                name: name,
                age: age,
                sstName: function (name) {
                    this.name = name
                }
            }
            return obj
        }

4.カスタムモデルコンストラクタ

  • 使用シナリオ:特定されたオブジェクトの複数の型を作成する必要があります。
  • 短所:各オブジェクトは同じデータ(メソッド)、メモリの浪費を有しています。
function Person (name,age) {
            this.name = name
            this.age = age
            this.setName = function (name) {
                this.name = name
            }
        }
        var p1 = new Person('tom',15)
        var p2 = new Person('jack',14)
        console.log(p1 instanceof Person) //true p1是Person类型

        function student (name,grade) {
            this.name = name
            this.grade = grade
        }  

        var s1 = new student('peter',6)
        console.log(s1 instanceof student) //true s1是student类型

        console.log(p1,p2)

値下げ

P1およびP2は、それぞれ、メモリの浪費をもたらす、同一のsetName()メソッドを持っています。

プロトタイプモデルのコンストラクタ+

  • 使用シナリオ:特定されたオブジェクトの複数の型を作成するには
function Person (name,age) {
           this.name  = name
           this.age = age
       }
       Person.prototype.setName = function (name) {
           this.name = name
       }

       var p1 = new Person('tom',12)
       var p2 = new Person('jack',13)

       console.log(p1,p2)

値下げ

オブジェクトのメソッドは、無駄なメモリを回避プロトタイプの上に配置されます。

おすすめ

転載: www.cnblogs.com/yuanchao-blog/p/10973342.html