3

JavaScript プロトタイプを使用する利点を学びたい。オブジェクト プロトタイプの使用により、パフォーマンスが向上しています。これをメモリの使用量で見たいです。

ケース-1

    var Foo1 = function (name) {
        this.name = name;
        getFirstName = function() { return "name1"; };
        getLastName = function() { return "name2"; };
    };
    for (var i = 0; i < 1000; i++) {
        var foo1 = new Foo1();
    }

ケース-2

    var Foo2 = function (name) {
        this.name = name;
    };

    Foo2.prototype = {
        getFirstName: function () { return "name1"; },
        getLastName: function () { return "name2"; },
    };

    for (var i = 0; i < 1000; i++) {
        var foo2 = new Foo2();
    }
  1. どのケースが他のケースよりもメモリを使用していますか?

  2. ケースのメモリ使用量を知ることはできますか?

  3. ケースのメモリ使用量の違いは何ですか?

4

2 に答える 2

0

2 番目のケースは、メモリ効率とパフォーマンスが向上します。コンストラクターでメソッドを定義すると、同じ関数またはメソッドが各オブジェクトに割り当てられるため、オブジェクトはより多くのメモリを消費します。したがって、prototype-object でメソッドを定義すると、すべてのオブジェクトが同じメソッドを一度だけ共有します。

したがって、私のアドバイスは、2 番目のケースで行ったように、コンストラクターで属性 (数値、文字列...) を定義し、プロトタイプ オブジェクトでメソッドまたは関数を定義することです。

ちなみに、このようにオブジェクトを定義すると:

var Foo1 = function (name) {
    this.name = name;
    getFirstName = function() { return "name1"; };
    getLastName = function() { return "name2"; };
};

メソッドgetFirstNameとgetLastNameはウィンドウのプロパティです。

var Foo1 = function (name) {
    this.name = name;
    window.getFirstName = function() { return "name1"; };
    window.getLastName = function() { return "name2"; };
};
于 2013-06-11T08:00:25.430 に答える