新しい演算子は js でどのように機能しますか?

王林
リリース: 2024-02-19 11:17:05
オリジナル
1106 人が閲覧しました

新しい演算子は js でどのように機能しますか?

js の new 演算子の動作原理は何ですか。具体的なコード例が必要です。

js の new 演算子は、オブジェクトの作成に使用されるキーワードです。その機能は、指定されたコンストラクターに基づいて新しいインスタンス オブジェクトを作成し、そのオブジェクトへの参照を返すことです。 new 演算子を使用する場合、実際には次の手順が実行されます:

  1. 新しい空のオブジェクトを作成します;
  2. 空のオブジェクトのプロトタイプをコンストラクターのプロトタイプ オブジェクトにポイントします ;
  3. コンストラクターのスコープを新しいオブジェクトに割り当てます (これにより、これは新しいオブジェクトを指します);
  4. コンストラクターでコードを実行し、プロパティとメソッドを新しいオブジェクトに追加します;
  5. コンストラクターがオブジェクトを返す場合は、そのオブジェクトを返し、それ以外の場合は、新しいオブジェクトを返します。

次は、new 演算子がどのように機能するかを示す簡単な例です。

// 定义一个构造函数
function Person(name, age) {
  this.name = name;
  this.age = age;
}

// 使用new操作符创建一个实例对象
var person1 = new Person('Tom', 18);

// 输出实例对象的属性值
console.log(person1.name);  // 输出 'Tom'
console.log(person1.age);   // 输出 18
ログイン後にコピー

上記のコードでは、Person という名前のコンストラクターを定義します。コンストラクターは、name と age の 2 つのパラメーターを受け取り、それらをインスタンス オブジェクト person1 の属性として使用します。

new 演算子を使用して person1 インスタンスを作成する場合、最初に空のオブジェクトが作成され、次に空のオブジェクトのプロトタイプがコンストラクター person のプロトタイプ オブジェクトを指します。次に、コンストラクターのスコープが空のオブジェクトに割り当てられ、コンストラクター内でこれを介して空のオブジェクトにアクセスできるようになります。最後に、コンストラクター内のコードが実行され、名前と年齢が新しいオブジェクトのプロパティに割り当てられます。

したがって、new 演算子によって作成されたオブジェクト person1 には、コンストラクター person で定義された属性 name と age があり、これらの属性にはドット演算子を介してアクセスできます。

コンストラクター内で明示的にオブジェクトを返さないことに注意してください。コンストラクターがオブジェクトを返す場合、new 演算子によって作成されたインスタンスは、新しく作成されたオブジェクトではなく、返されるオブジェクトになります。例:

// 定义一个构造函数
function Person(name, age) {
  this.name = name;
  this.age = age;

  // 错误示例:返回一个对象
  return {
    name: 'Error',
    age: -1
  };
}

// 使用new操作符创建一个实例对象
var person1 = new Person('Tom', 18);

// 此时person1实际上是一个普通的对象,而不是Person的实例
console.log(person1 instanceof Person);  // 输出 false
console.log(person1.name);  // 输出 'Error'
console.log(person1.age);   // 输出 -1
ログイン後にコピー

上記の例では、コンストラクター person は明示的にオブジェクトを返すため、person1 は実際には person のインスタンスではなく、通常のオブジェクトです。

要約すると、new 演算子は、新しいインスタンス オブジェクトを作成し、コンストラクターでオブジェクトのプロパティを初期化するために使用されます。 new 演算子によって作成されたインスタンス オブジェクトは、コンストラクターのプロトタイプ オブジェクトを継承し、コンストラクターで定義されたプロパティとメソッドにアクセスできます。

以上が新しい演算子は js でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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