JS での new() の使用法の分析

php中世界最好的语言
リリース: 2018-05-11 13:53:27
オリジナル
1559 人が閲覧しました

今回は、JS での new() の使用法についての分析をお届けします。JS で new() を使用する際の 注意事項 は何ですか。実際のケースを見てみましょう。

はじめに

他の高級言語と同様に、

javascriptにも新しい演算子があり、クラスをインスタンス化し、インスタンスオブジェクトをメモリに割り当てることがわかっています。 しかし、JavaScript ではすべてがオブジェクトです。なぜオブジェクトを生成するために new を使用する必要があるのでしょうか? この記事では、JavaScript の new の謎を探ります...

Person の新しいインスタンスを作成するには、new 演算子を使用する必要があります。

この方法でコンストラクターを呼び出すと、実際には次の 4 つのステップが実行されます:

(1) 新しいオブジェクトを作成します。

(2) コンストラクターのスコープを新しいオブジェクトに割り当てます (つまり、このポイントはこの新しいオブジェクトに);

(3) コンストラクター内のコードを実行します (この新しいオブジェクトに属性を追加します);

(4) 新しいオブジェクトを返します。

新しい演算子

上記の基本概念を導入し、新しい演算子を追加すると、JavaScript で従来の

オブジェクト指向クラス + 新しいメソッドオブジェクト作成を完成させることができ、これをこのアプローチと呼びます疑似古典的。

上記の例に基づいて、次のコードを実行します

var obj = new Base();
ログイン後にコピー
このコードの結果は何ですか? Javascript エンジンで表示されるオブジェクト モデルは次のとおりです:

new 演算子は実際に何をするのでしょうか?非常に簡単で、たった 3 つのことを実行しただけです。

var obj = {};
obj.proto = Base.prototype;
Base.call(obj);
ログイン後にコピー
最初の行では、空のオブジェクト obj を作成します

2 行目では、この空のオブジェクトの proto メンバーを Base 関数オブジェクトのプロトタイプ メンバー オブジェクトにポイントします

3 行目では、this ポインターをポイントしますBase 関数オブジェクトの obj に置き換えて Base 関数を呼び出します。呼び出し関数の使用法に関して、このメンバー変数の値は「base」です。

Base.prototype オブジェクトにいくつかの関数を追加すると、どのような効果が得られますか?

例えば、コードは次のとおりです:

Base.prototype.toString = function() {
 return this.id;
}
ログイン後にコピー
そして、newを使用して新しいオブジェクトを作成すると、protoの特性に従って、新しいオブジェクトのメソッドとしてtoStringメソッドにアクセスすることもできます。

コンストラクターでは、「クラス」のメンバー変数 (例: この例では id) を設定し、コンストラクター オブジェクトのプロトタイプでは、「クラス」のパブリック メソッドを設定します。したがって、クラスとクラスのインスタンス化の効果は、関数オブジェクト、JavaScript 固有のプロト、プロトタイプ メンバー、新しい演算子を通じてシミュレートされます。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

vue+axios がリクエストインターセプト機能を実装する方法

Angular がサーバーサイドレンダリング開発を実行する方法

以上がJS での new() の使用法の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート