ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript継承実装メソッド_JavaScriptスキル

JavaScript継承実装メソッド_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 18:47:48872ブラウズ

以下に一般的に使用されるメソッドをいくつか示します。
1. オブジェクトの偽装
原則: コンストラクターは単なる関数であるため、コンストラクターは this キーワードを使用して値を割り当てます。このようにして、classB は classA のコンストラクターで定義されたプロパティとメソッドを受け取ります。例:

コードをコピーします コードは次のとおりです。

function classA(name)
{
this.name=name; this.showName=function(){alert(this.name);}
}
function classB(name)
{
this.newMethod = classA;
this.newMethod(name) ;
}
obj = new classA("hero");
objB = new classB("dby"); // ヒーロー
objB.showName (); // print dby 説明 classB は classA のメソッドを継承します。


オブジェクトの偽装は、たとえば、


Copy を実装できます。 code コードは次のとおりです。
function classz(){
this.newMethod = classX;
this.newMethod(); this.newMethod;
this.newMethod=classY ;
this.newMethod():
delete this.newMethod;


ただし、classX と classY が

2.call() メソッド

call メソッドは、最初のパラメーターが this のオブジェクトとして使用されます。 、その他のパラメータは関数に直接渡されます。


コードをコピーします。
コードは次のとおりです。 >関数 SayName(perfix) { alert(perfix this.name); obj= new Object();
obj.name="hero"; 🎜>sayName.call(obj,"hello," );
関数 classA(name)
{
this.name=name;
this.showName=function(){alert(this.
関数 classB (名前)
{
classA.call(this,name);
objB = new classB("bing");
objB.showName();////説明 classB は classA の showName メソッドを継承します



3.apply() メソッド

apply() メソッドには 2 つのパラメータがあり、1 つはこのオブジェクトとして使用され、もう 1 つは関数




コードの配列

に渡されます。コードは次のとおりです。

function SayName(perfix)
4. プロトタイプ チェーン

プロトタイプ オブジェクトのプロパティとメソッドは、対応するクラスのすべてのインスタンスに渡されます。プロトタイプ チェーンが使用されます。




コードをコピー

コードは次のとおりです。
function classA (){}
classA.prototype.name="hero";
classA.prototype.showName=function(){alert(this) .name)} function classB(){} classB.prototype=new classA(); objb = new classB() objb.showName();//print ヒーローは b を示します
のメソッドを継承します。ここでは、classA のコンストラクターを呼び出すことに注意する必要があります。パラメーターが渡されない場合、これはプロトタイプ チェーンの標準的な方法であり、クラス A のコンストラクターが関数にはパラメータがありません。
また、サブクラスのすべてのプロパティとメソッドは、プロトタイプ属性が割り当てられた後に表示され、その中に存在する必要があります。オブジェクトのプロトタイプ属性が置き換えられるため、以前に割り当てられた値は削除されます。新しいオブジェクトを使用すると、新しいメソッドが追加された元のオブジェクトは破棄されます。


5 混合メソッド

は、偽装を使用してコンストラクター プロパティを定義し、プロトタイプ メソッドを使用してオブジェクト メソッドを定義します。



コードをコピー


コードは次のとおりです。
function classA(name)
{
this.name=name; } classA.prototype.showName=function(){alert(this.name)} 関数 classB (名前) { classA. call(this,name); classB.prototype = new classA();
classB.prototype.showName1=function(){alert(this.name "*****");
obj = new classB("hero");
obj.showName();


classB のコンストラクターで、 call メソッドを呼び出して classA の name 属性を取得し、プロトタイプ チェーンを使用して classA の showName メソッドを継承します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。