call 方法在使用一個指定的this值和若干個指定的參數值的前提下調用某個函數或方法.web
注意:該函數的語法與 apply() 方法的語法幾乎徹底相同,惟一的區別在於,apply()方法接受的是一個參數數組,而 call()方法接受的是一系列參數列表。編程
瞭解完這兩個方法的概念後,咱們來一步一步理解他們的應用.數組
改變方法內this的指向微信
咱們先來看下面這個例子app
var name = "編程的人";函數
var age = 1;this
var person = {對象
name:"公衆號:bianchengderen",繼承
age:20博客
}
function say(){
console.log("我叫:"+this.name+",年齡:"+this.age)
}
say();// 我叫: 編程的人,年齡: 1
say.call(person);//我叫: 公衆號:bianchengderen,年齡: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.
在這裏,咱們沒有涉及到加入參數的傳遞,是方便你們的理解,須要加入參數傳遞,你們能夠敲代碼試一試,看看效果怎麼樣!
咱們就先講這兩個例子吧,省得你們越理解越糊塗.什麼事情都是須要簡單入手,會了以後纔會追求更深的一面!
還有,記得也加入apply的應用實例咯!
本文屬於吳統威的博客,微信公衆號:bianchengderen 的原創文章,轉載時請註明出處及相應連接:http://www.wutongwei.com/front/infor_showone.tweb?id=158 ,歡迎你們傳播與分享.