ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript_javascript スキルでの call と apply の使用の概要

Javascript_javascript スキルでの call と apply の使用の概要

WBOY
WBOYオリジナル
2016-05-16 17:56:09933ブラウズ

簡単に言うと、関数実行のコンテキストを変更するという最も基本的な使い方です。 2 つのメソッドの基本的な違いは、渡されるパラメーターの違いにあります。
call(obj,arg1,arg2,arg3); call の最初のパラメータはオブジェクトであり、null にすることもできます。パラメータはカンマで区切られ、任意のタイプを使用できます。
apply(obj,[arg1,arg2,arg3]); apply の最初のパラメーターはオブジェクトであり、パラメーターは配列または引数オブジェクトにすることができます。
これら 2 つのメソッドは通常、クラス継承とコールバック関数に使用されます:
関数 1. クラス継承:
まずこの例を見てみましょう:

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

function Person(name,age){
this.name = name; 🎜 >this.age=age;
this.alertName = function(){
alert(this.name);
this.alertAge = function(){
alert(this . 年齢);
}
}
関数 webDever(名前,年齢,性別){
この.性別=性別; > this.alertSex = function(){
alert(this.sex);
}
}
var test= new webDever("フールズワーフ",28,"男性"); > test.alertName();//Fool's Wharf
test.alertAge();//28
test.alertSex();//男性


このようにして、webDever class は Person クラスを継承します。 Person.call(this,name,age) は、このオブジェクトの下で実行するために Person コンストラクター (関数でもあります) を使用することを意味し、webDever には Person のすべての属性とメソッドがあり、テスト オブジェクトは直接実行できます。人のメソッドと属性を呼び出すと、2009 年の理解は非常に表面的でした (笑)。

関数 2. コールバック関数:
call と apply は、開発プロセス中にコールバック関数の実行コンテキストを変更する必要があることがよくあります。使用されるものは ajax またはタイミングです。一般に、Ajax はグローバル、つまり window オブジェクトの下で行われます。


Copy code
コードは次のとおりです。 function Album(id, title, owner_id) { this.id = id; this.name = title; .owner_id = owner_id;
Album.prototype.get_owner = function (コールバック) {
var self = this
$.get('/owners/' this.owner_id, function ( data) {
callback && callback.call(self, data.name));
}; var album(1, 'life', 2); >album .get_owner(function (owner) {
alert('アルバム' this.name ' は ' owner に属します);
});


ここ




コードをコピー


コードは次のとおりです:


album.get_owner(function (owner) {
alert( 'アルバム' this .name ' は ' owner) に属します); の This.name はアルバム オブジェクトの name 属性を直接取得できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。