ホームページ  >  記事  >  ウェブフロントエンド  >  jsがオブジェクトを新規作成するときに何をするか知っていますか?

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

藏色散人
藏色散人転載
2023-04-18 15:36:452032ブラウズ

はじめに

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

new の役割

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

  • new

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

  • new

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

コンストラクター
Person

は明示的に return 値を返しません (デフォルトは unknown を返します)。値を返すようにすると? <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>上の例のコンストラクターは

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 までご連絡ください。