function A(x)
{
this.x = x;
}
var obj = new A(5);
このコードは非常に単純ですが、私たちにとって重要なのは、C# でクラスのインスタンスを使用するときと同じように、Obj に属性 x が割り当てられたという非常に驚くべき結果に達しました。では、この物件はどのようにして生まれたのでしょうか?
重要なステートメント: this.x=x。この文は属性を宣言して割り当てます。ここで、これは何ですか?と必ず尋ねます。 this.x を使用して属性を宣言したり割り当てたりできるのはなぜですか?
実際、これはインスタンス化したばかりの obj を表しており、obj を使用してコンストラクター A のプロパティ、メソッドなどを呼び出すことと同じです。
では、コンストラクターでメソッドを定義するにはどうすればよいでしょうか?
function A(x,y )
{
this.x = x;
this.y = y;
A.prototype.FunX = function(){alert(x)}; = function( ){alert(y)};
}
var obj = new A(5,10);
alert(obj.y); 🎜>obj . Fun 🎜>
コードをコピーします
コードは次のとおりです:
A.prototype.FunX = function(){alert (x)};
A.prototype.FunY = function(){alert(y)};
コードをコピー
コードは次のとおりです。
function A(x,y )
{
このコードを実行すると、ポップアップの結果が以前と同じであることがわかります。どちらのメソッドも外部で定義されており、FunY メソッドはインスタンス化後に定義されています。ここで何か見えますか?明らかに、obj.FunY() ステートメントを使用すると、コードは obj を再構築してからこのメソッドを実行します。
コードをコピーします
コードは次のとおりです。
obj.FunY(); A.prototype .FunY = function(){alert("10")};
明らかに、FunY() はメソッドを実行しません。
次回は、JavaScript コンストラクターとプロトタイプについて説明します。質問や間違いがあれば、遠慮なく修正して議論してください。