JavaScript の New は、オブジェクトをインスタンス化するために使用される演算子です。たとえば、Person の新しいインスタンスを作成するには、new 演算子を使用する必要があります。
この記事の動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
JavaScript における新しいとはどういう意味ですか? jsのnew()は具体的に何をするのでしょうか?
Person の新しいインスタンスを作成するには、new 演算子を使用する必要があります。この方法でコンストラクターを呼び出すと、実際には次の 4
ステップが実行されます:
(1) 新しいオブジェクトを作成します;
(2) コンストラクターの関数を変更しますドメインが新しいオブジェクトに割り当てられます (したがって、これは新しいオブジェクトを指します);
(3) コンストラクターでコードを実行します (新しいオブジェクトに属性を追加します);
(4 ) 新しいオブジェクトを返します。
新しい演算子
上記の基本概念を導入し、新しい演算子を追加すると、従来の指向のオブジェクトの作成を完了できます。クラス new を使用します。JavaScript では、このメソッドを擬似古典と呼びます。
上記の例に基づいて、次のコードを実行します。
var obj = new Base();
このコードの結果、次のオブジェクトが表示されます。 Javascript エンジン モデルは次のとおりです:
new 演算子は具体的に何をするのですか? これは実際には非常に単純で、3 つのことを行います。
var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
最初の行では、空のオブジェクト objを作成します
2 行目では、これを変更します空のオブジェクト オブジェクトの __proto__ メンバーは、Base 関数オブジェクトのプロトタイプ メンバー オブジェクトを指します
3 行目では、Base 関数オブジェクトの this ポインターを obj に置き換えて、Base 関数を呼び出します。 obj オブジェクトに値を代入します。 id メンバー変数。call 関数の使用法に関して、このメンバー変数の値は "base" です。
Base.prototype オブジェクトにいくつかの関数を追加すると、どのような効果が得られるでしょうか?
たとえば、コードは次のとおりです。
Base.prototype.toString = function() { return this.id; }
次に、 new を使用して新しいオブジェクトを作成すると、 __proto__ の特性により、toString メソッドは新しいオブジェクトのメソッドとしてアクセスすることもできます。
コンストラクターでは、「クラス」のメンバー変数 (例: この例では id) を設定し、コンストラクター オブジェクト プロトタイプでは、「クラス」のパブリック メソッドを設定します。 。したがって、クラスとクラスのインスタンス化の効果は、関数オブジェクト、JavaScript 固有の __proto__ およびプロトタイプ メンバー、および new 演算子を通じてシミュレートされます。
推奨学習: 「JavaScript 上級チュートリアル 」
以上がJavaScript で新しいとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。