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

伊谢尔伦
リリース: 2017-07-20 15:02:30
オリジナル
1784 人が閲覧しました

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

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

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

call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
ログイン後にコピー

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

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

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

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

簡単に言えば、これら 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 サイトの他の関連記事を参照してください。

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