call メソッドは、オブジェクトのメソッドを呼び出し、現在のオブジェクトを別のオブジェクトに置き換えます。"/> call メソッドは、オブジェクトのメソッドを呼び出し、現在のオブジェクトを別のオブジェクトに置き換えます。">

ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptでcallとapplyを使って継承を実装する方法を詳しく解説

JavaScriptでcallとapplyを使って継承を実装する方法を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-20 15:02:301839ブラウズ

js の call と apply は両方とも継承を実装できます。唯一のパラメーターの違いは、func.call(func1, var1, var2, var3) の対応する apply 書き込みメソッドが func.apply(func1, [var1, var2, var3) であることです。 ])。

JSマニュアルの呼び出しの説明:

d41813e6630d9f7e981ba6f409905b82callメソッド
オブジェクトのメソッドを呼び出して、現在のオブジェクトを別のオブジェクトに置き換えます。

call([thisObj[,arg1[, arg2[,   [,.argN]]]]])

パラメータ
thisObj
オプション。現在のオブジェクトとして使用されるオブジェクト。

arg1、arg2、、argN
オプション。一連のメソッドパラメータが渡されます。

説明
callメソッドは、別のオブジェクトの代わりにメソッドを呼び出すために使用できます。 call メソッドは、関数のオブジェクト コンテキストを初期コンテキストから thisObj で指定された新しいオブジェクトに変更します。

thisObj パラメーターが指定されていない場合は、グローバル オブジェクトが thisObj として使用されます。 0fe0b7695b8025b8365ca0c050e039db

簡単に言えば、これら 2 つの関数の機能は、実際にはオブジェクトの内部ポインターを変更すること、つまり、オブジェクトの this が指すコンテンツを変更することです。これは、オブジェクト指向の js プログラミングで役立つ場合があります。 js におけるこれら 2 つの関数の重要な役割について説明するために、例として apply を取り上げてみましょう。例:

<SPAN style="FONT-SIZE: 18px"> function Person(name,age){   //定义一个类   
        this.name=name;     //名字   
        this.age=age;       //年龄   
        this.sayhello=function(){alert(this.name)};  
    }  
    function Print(){            //显示类的属性   
        this.funcName="Print";  
        this.show=function(){  
            var msg=[];  
            for(var key in this){  
                if(typeof(this[key])!="function"){  
                    msg.push([key,":",this[key]].join(""));  
                }  
            }  
            alert(msg.join(" "));  
        };  
    }  
    function Student(name,age,grade,school){    //学生类   
        Person.apply(this,arguments);//比call优越的地方   
        Print.apply(this,arguments);  
        this.grade=grade;                //年级   
        this.school=school;                 //学校   
    }  
    var p1=new Person("开化",80);  
    p1.sayhello();  
    var s1=new Student("云飞",40,9,"岳麓书院");  
    s1.show();  
    s1.sayhello();  
    alert(s1.funcName);</SPAN>

さらに、Function.apply() はプログラムのパフォーマンスを向上させる上で重要な役割を果たします。
Math.max() 関数から始めましょう。 Math.max の後には任意の数のパラメータを指定でき、最後に戻り値を返します。すべてのパラメータの最大値。
例えば

そうです


以上がJavaScriptでcallとapplyを使って継承を実装する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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