Javascript 中的 call 和 apply使用介紹

來源:互聯網
上載者:User

簡單的說就是改變函數執行的上下文,這是最基本的用法。兩個方法基本區別在於傳參不同。
call(obj,arg1,arg2,arg3);call第一個參數傳對象,可以是null。參數以逗號分開進行傳值,參數可以是任何類型。
apply(obj,[arg1,arg2,arg3]);apply第一個參數傳對象,參數可以是數組或者arguments 對象。
這兩個方法通常被用來類的繼承和回呼函數:
作用一、類的繼承:
先來看這個例子: 複製代碼 代碼如下: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("愚人碼頭",28,"男");
test.alertName();//愚人碼頭
test.alertAge();//28
test.alertSex();//男

這樣 webDever類就繼承Person類,Person.call(this,name,age) 的 意思就是使用 Person建構函式(也是函數)在this對象下執行,那麼 webDever就有了Person的所有屬性和方法,test對象就能夠直接調用Person的方法以及屬性了; 09年的理解解非常粗淺,呵呵。
作用二、回呼函數:
call 和 apply在回調行數中也非常有用,很多時候我們在開發過程中需要對改變回呼函數的執行內容,最常用的比如ajax或者定時什麼的,一般情況下,Ajax都是全域的,也就是window對象下的,來看這個例子: 複製代碼 代碼如下:function Album(id, title, owner_id) {
this.id = id;
this.name = title;
this.owner_id = owner_id;
};
Album.prototype.get_owner = function (callback) {
var self = this;
$.get('/owners/' + this.owner_id, function (data) {
callback && callback.call(self, data.name);
});
};
var album = new Album(1, '生活', 2);
album.get_owner(function (owner) {
alert('The album' + this.name + ' belongs to ' + owner);
});

這裡 複製代碼 代碼如下:album.get_owner(function (owner) {
alert('The album' + this.name + ' belongs to ' + owner);
});

中的 this.name就能直接取到album對象中的name屬性了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.