ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のコンストラクターの詳細な分析

JavaScript のコンストラクターの詳細な分析

PHPz
PHPzオリジナル
2016-05-16 15:04:551839ブラウズ

コンストラクター プロパティは、このオブジェクトを作成した配列関数への参照を返します。この記事では JavaScript のコンストラクターを紹介します。必要な方は参考にしてください。

定義と使用法

コンストラクター プロパティは、このオブジェクトを作成した配列関数への参照を返します。

構文

object.constructor

コンストラクター、コンストラクター、この名前はよく知られています、コンストラクターは常にポインターです現在のオブジェクトを作成したコンストラクターに送信されます。

ここで注意すべき点は、各関数にはプロトタイプ属性があり、このプロトタイプのコンストラクターはこの関数を指しているということです。このとき、この関数のプロトタイプを修正したときに事故が発生しました。 。

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.getAge = function(){
return this.age;
}
Person.prototype.getName = function(){
return this.name;
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Person(name, age)
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

など。ただし、次の場合:

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype = {
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Object()
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

その結果、コンストラクターが変更されました。 。

その理由は、プロトタイプ自体もオブジェクトであるためです。コンストラクターは常に を指すため、上記のコードは

Person.prototype = new Object({
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
});

と同等です。現在のオブジェクトを作成するコンストラクターである場合、上記のコードの p.constructor の出力が Object であることを理解するのは難しくありません。

プロトタイプを変更した後もコンストラクターが依然として person を指すようにしたい場合はどうすればよいですか?簡単です。値を Person.prototype.constructor に直接割り当てるだけです:

Person.prototype = {
constructor:Person,
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}

上記は、エディターによって導入された JavaScript のコンストラクターです。その他の関連チュートリアルについては、 を参照してください。 JavaScript ビデオチュートリアル!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。