ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript での call() メソッドと apply() メソッドの用途は何ですか (コードは添付されています)。

Javascript での call() メソッドと apply() メソッドの用途は何ですか (コードは添付されています)。

不言
不言オリジナル
2018-08-01 16:35:001431ブラウズ

JavaScript の apply() メソッドと call() メソッドは Function オブジェクトのメソッドです。各 Function オブジェクトには apply() メソッドと call() メソッドがあります。 JavaScriptの使い方と機能は何ですか?この記事では、apply() メソッドと call() メソッドの使用法について説明します。

apply() メソッドと call() メソッドの構文:

/*apply()方法*/
function.apply(thisObj[, argArray])
/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);

Function: コピーせずに別のオブジェクトのメソッドを借用します。 (別のオブジェクトの代わりにメソッドを呼び出すために使用でき、関数のオブジェクト コンテキストを初期コンテキストから thisObj で指定された新しいオブジェクトに変更します)

apply() メソッドと call() メソッドの基本的な使用法:

function add(a,b){
  return a+b;  
}
function sub(a,b){
  return a-b;  
}
var a1 = add.apply(sub,[4,2]);  //sub调用add的方法
var a2 = sub.apply(add,[4,2]);
alert(a1);  //6     
alert(a2);  //2

/*call的用法*/
var a1 = add.call(sub,4,2);
apply() メソッドと call() メソッドは継承を実装します:

function Animal(name){
  this.name = name;
  this.showName = function(){
        alert(this.name);    
    }    
}

function Cat(name){
  Animal.apply(this,[name]);    
}

var cat = new Cat("咕咕");
cat.showName();

/*call的用法*/
Animal.call(this,name);
apply() メソッドと call() メソッドは多重継承を実装します:

    function Class10(){
      this.showSub = function(a,b){
            alert(a - b);
        }   
    }
    
    function Class11(){
      this.showAdd = function(a,b){
            alert(a + b);
        }  
    }
    
    function Class12(){
      Class10.apply(this);
      Class11.apply(this);   
      // Class10.call(this);
      //Class11.call(this);  
    }
    
    var c2 = new Class12();
    c2.showSub(3,1);    //2
    c2.showAdd(3,1);    //4
Call() メソッドの機能: 疑似メソッドを変更しますarray to true Array

擬似配列は長さ属性を含むjsonオブジェクトです。実際には、コレクションをシミュレートします(コレクションデータを記述します)


例:

var json = {1:’苹果’,2:’香蕉’,3:’菠萝’,length:3}
Var arr = [‘苹果’,’香蕉’,’菠萝’]

彼の特徴:


1. キーは 1、2、3、4、5 です
2。長さ属性が含まれています

疑似配列を実際の配列に変換する方法

/*我们通过如下方式将其转换成数组*/
/*slice:截取数组,返回的还是数组,这里截取全部*/
var domNodes=Array.prototype.slice.call(divs);
/*这样domNodes就可以应用Array下所有方法*/
Apply() メソッドの使用ヒント:

1. Math.max 配列内の最大の項目を取得できます:

Math.max は配列である Math.max([param1, param2]) をサポートしていませんが、Math.max(param1) をサポートしているためです。 , param2...)、apply の特性に従って var max=Math.max.apply(null,array) を解くことができるため、配列内の最大項目を簡単に取得できます (apply は配列を次のように変換します)。パラメータを指定し、パラメータを次々とメソッドに渡します)。

この部分を呼び出すとき、最初のパラメーターは null に渡されます。これは、このメソッドを呼び出すオブジェクトがないため、計算して返された結果を取得するためにこのメソッドを使用する必要があるためです。そのため、null を直接渡します。

このメソッドを使用して配列内の最小項目を取得することもできます: Math.min.apply(null,array)

2. Array.prototype.push は 2 つの配列の結合を実現できます


同じプッシュメソッドは配列のプッシュを提供しませんが、プッシュ (param1、param2...paramN) を提供します。この配列を変換するために apply を使用することもできます。つまり、

   var arr1=new Array("1","2","3");
    var arr2=new Array("4","5","6");
    Array.prototype.push.apply(arr1,arr2);    
    //得到合并后数组的长度,因为push就是返回一个数组的长度

はこのように理解することもでき、arr1 はプッシュを呼び出しますメソッドの場合、パラメーターは apply を通じて配列をパラメーター リストのセットに変換します

通常、どのような状況で、Math.max などの特別な用途に apply を使用できます。一般に、ターゲット関数には n 個のパラメーター リストとは配列を受け取らないため、この問題は適用することで賢く解決できます。

おすすめ関連記事:

JavaScriptのcallメソッドとapplyメソッドの使い方の比較_基礎知識

javascriptのcallメソッドとapplyメソッドの簡単な説明_javascriptスキル

🎜

以上がJavascript での call() メソッドと apply() メソッドの用途は何ですか (コードは添付されています)。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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