JavaScriptのcallとapplyの違いと使い方

高洛峰
リリース: 2017-01-12 11:40:00
オリジナル
1089 人が閲覧しました

1. メソッドの定義
callメソッド:
構文: fun.call(thisArg[, arg1[, arg2[, ...]]])
定義: オブジェクトのメソッドを呼び出し、現在のオブジェクトを別のオブジェクトに置き換えます。
説明:
call メソッドを使用すると、別のオブジェクトの代わりにメソッドを呼び出すことができます。 call メソッドは、関数のオブジェクト コンテキストを元のコンテキストから thisArg で指定された新しいオブジェクトに変更します。
thisArg パラメータが指定されていない場合は、Global オブジェクトが thisArg として使用されます。

applyメソッド:
構文: fun.apply(thisArg[, argsArray])
定義: オブジェクトのメソッドを適用し、現在のオブジェクトを別のオブジェクトに置き換えます。
注意:
argArray が有効な配列でない場合、または引数オブジェクトではない場合、TypeError が発生します。
argArray も thisArg も指定されていない場合は、Global オブジェクトが thisArg として使用され、パラメータを渡すことはできません。

2. 2 つのメソッドの基本的な違いは、パラメーターの受け渡し方法が異なることです
2.1. 呼び出しメソッド:

function Product(name, price) {
this.name = name;
this.price = price;
if (price < 0)
throw RangeError(&#39;Cannot create product "&#39; + name + &#39;" with a negative price&#39;);
return this;
}
function Food(name, price) {
Product.call(this, name, price);
this.category = &#39;food&#39;;
}
Food.prototype = new Product();
function Toy(name, price) {
Product.call(this, name, price);
this.category = &#39;toy&#39;;
}
Toy.prototype = new Product();
var cheese = new Food(&#39;feta&#39;, 5);
var fun = new Toy(&#39;robot&#39;, 40);
ログイン後にコピー

3. 関数の例

3.継承

function Product(name, price) {
this.name = name;
this.price = price;
if (price < 0)
throw RangeError(&#39;Cannot create product "&#39; + name + &#39;" with a negative price&#39;);
return this;
}
function Food(name, price) {
Product.apply(this, arguments);
this.category = &#39;food&#39;;
}
Food.prototype = new Product();
function Toy(name, price) {
Product.apply(this, arguments);
this.category = &#39;toy&#39;;
}
Toy.prototype = new Product();
var cheese = new Food(&#39;feta&#39;, 5);
var fun = new Toy(&#39;robot&#39;, 40);
ログイン後にコピー

3.2. コールバック関数

function Person(name,age){
this.name = name;
this.age=age;
this.alertName = function(){
alert(this.name);
}
this.alertAge = function(){
alert(this.age);
}
}
function webDever(name,age,sex){
Person.call(this,name,age);
this.sex=sex;
this.alertSex = function(){
alert(this.sex);
}
}
var test= new webDever(“设计蜂巢”,24,”男”);
test.alertName();//设计蜂巢
test.alertAge();//24
test.alertSex();//男
ログイン後にコピー

JavaScript の call と apply の違いとその使用方法については、PHP 中国語 Web サイトを参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート