jsがオブジェクトを新規作成するときに何をするか知っていますか?

藏色散人
リリース: 2023-04-18 15:36:45
転載
2004 人が閲覧しました

はじめに

JavaScript では、new 演算子を使用してインスタンス オブジェクトを作成でき、このインスタンス オブジェクトは元のオブジェクトのプロパティとメソッドを継承します。したがって、 new の存在意義は、単にオブジェクトをインスタンス化するだけでなく、JavaScript で継承を実装することです。

new の役割

まずは例を通して new の役割を理解しましょう。例は次のとおりです。次の結論を導き出すことができます:

  • new

    コンストラクター Person を通じて作成されたインスタンス オブジェクトは、コンストラクター内のプロパティにアクセスできます。 。

  • new

    コンストラクター Person を通じて作成されたインスタンスは、コンストラクター プロトタイプ チェーン内のプロパティにアクセスできます。つまり、 new を通じてアクセスできます。 オペレーター、インスタンス、コンストラクターは、プロトタイプ チェーンを通じて接続されます。

コンストラクター
Person

は明示的に return 値を返しません (デフォルトは unknown を返します)。値を返すようにすると? <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">function Person(name) { this.name = name } Person.prototype.sayName = function () { console.log(this.name) } const t = new Person(&amp;#39;小明&amp;#39;) console.log(t.name) // 小明 t.sayName() // 小明</pre><div class="contentsignin">ログイン後にコピー</div></div>上の例のコンストラクターは

1

を返しましたが、この戻り値は役に立たず、結果は前の例とまったく同じになります。別の結論を導き出すこともできます。

コンストラクターが元の値を返す場合、戻り値は無意味です。

オブジェクトが返されたときに何が起こるかを試してみましょう:
function Person(name) {
  this.name = name
  return 1
}
const t = new Person(&#39;小明&#39;)
console.log(t.name)  // 小明
ログイン後にコピー

上記の例を通して、戻り値がオブジェクトの場合、戻り値は正常に返されることがわかります。 。 外出。

コンストラクターの戻り値がオブジェクトの場合、戻り値は通常どおり使用されるという結論に再び達しました。

要約: これら 2 つの例は、コンストラクターが値を返さないようにすべきであることを示しています。元の値を返しても効果がないため、オブジェクトを返しても new 演算子は効果がありません。

newを実装するには

まず、

new

演算子を使用するときに js が何を行うかを知る必要があります。

js は内部的にオブジェクトが作成されます。
  1. このオブジェクトはコンストラクター プロトタイプのプロパティにアクセスできるため、オブジェクトをコンストラクターに接続する必要があります。
  2. コンストラクター内のこれには、この新しいオブジェクトの値が割り当てられます (つまり、これは新しいオブジェクトを指します)
  3. 元の値の戻りは無視する必要があり、返されたオブジェクトは通常どおり処理する必要があります
  4. 手順を理解した後、開始できますnew の関数を実装するには:
function Person(name) {
  this.name = name
  return {age: 23}
}
const t = new Person(&#39;小明&#39;)
console.log(t)  // { age: 23 }
console.log(t.name)  // undefined
ログイン後にコピー

テスト例は次のとおりです:

function _new(fn, ...args) {
  const newObj = Object.create(fn.prototype);
  const value = fn.apply(newObj, args);
  return value instanceof Object ? value : newObj;
}
ログイン後にコピー

上記は、JavaScript における new 演算子の役割と new 演算子の実装方法についてです。

以上がjsがオブジェクトを新規作成するときに何をするか知っていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.im
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!