首頁 > web前端 > js教程 > 理解Javascript的call、apply_javascript技巧

理解Javascript的call、apply_javascript技巧

WBOY
發布: 2016-05-16 15:25:20
原創
1346 人瀏覽過

call 方法在使用一個指定的this值和若干個指定的參數值的前提下呼叫某個函數或方法.

注意:該函數的語法與apply() 方法的語法幾乎完全相同,唯一的區別在於,apply()方法接受的是一個參數數組,而call ()方法接受的是一系列參數列表。

了解完這兩個方法的概念後,我們來一步一步理解他們的應用.

改變方法內this的指向
我們先來看下面這個例子

var name = "编程的人";
var age = 1;
var person = {
name:"公众号:bianchengderen",
age:20
}
function say(){
console.log("我叫:"+this.name+",年龄:"+this.age)
}
say();// 我叫: 编程的人,年龄: 1
say.call(person);//年龄:20

登入後複製

這兩種呼叫執行的方式不一樣,他們的結果也不一樣,不一樣在於say方法裡面的this指向了不同的對象,第一次執行指向的是window,而我們以call方式執行,將say方法裡面的this指向了person對象.
這是不是有點冒充別人的感覺.那我們這樣有什麼作用了?當然自己可以多多想想,到底能做什麼! 我們繼續往下面走.

實作繼承機制
繼承,這是高階物件導向的特性,用call我們可以將JAVASCRIPT有這種特點.
在看下面這個例子之前,必須好好理解上面的例子.

function Person(){
this.name = "编程的人";
this.age = 20;
}
function Student(){
Person.call(this);
this.school = "地球";
}
var student = new Student();
//下面打印出来: 编程的人,20,地球
console.log(student.name,student.age,student.school);

登入後複製

在這個例子裡,Student函數繼承了Person的name和age屬性,就是透過Person.call(this)來實現,理解上面的例子後,應該是不難理解的.所以Student即擁有了Person的特點,又有自己的個性,比如這個this.school.

在這裡,我們沒有涉及到加入參數的傳遞,是方便大家的理解,需要加入參數傳遞,大家可以敲代碼試一試,看看效果怎麼樣!

我們就先講這兩個例子吧,之後再進行深入學習。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板