理解Javascript的call、apply
call 方法在使用一個(gè)指定的this值和若干個(gè)指定的參數(shù)值的前提下調(diào)用某個(gè)函數(shù)或方法.
注意:該函數(shù)的語(yǔ)法與 apply() 方法的語(yǔ)法幾乎完全相同,唯一的區(qū)別在于,apply()方法接受的是一個(gè)參數(shù)數(shù)組,而 call()方法接受的是一系列參數(shù)列表。
了解完這兩個(gè)方法的概念后,我們來(lái)一步一步理解他們的應(yīng)用.
改變方法內(nèi)this的指向
我們先來(lái)看下面這個(gè)例子
var name = "編程的人"; var age = 1; var person = { name:"公眾號(hào):bianchengderen", age:20 } function say(){ console.log("我叫:"+this.name+",年齡:"+this.age) } say();// 我叫: 編程的人,年齡: 1 say.call(person);//年齡:20
這兩種調(diào)用執(zhí)行的方式不一樣,他們的結(jié)果也不一樣,不一樣在于say方法里面的this指向了不同的對(duì)象,第一次執(zhí)行指向的是window,而我們以call方式執(zhí)行,將say方法里面的this指向了person對(duì)象.
這是不是有點(diǎn)冒充別人的感覺(jué).那我們這樣有什么作用了?當(dāng)然自己可以多多想想,到底能做什么! 我們繼續(xù)往下面走.
實(shí)現(xiàn)繼承機(jī)制
繼承,這是高級(jí)面向?qū)ο蟮囊环N特性,用call我們可以將JAVASCRIPT有這種特點(diǎn).
在看下面這個(gè)例子之前,必須好好理解上面的例子.
function Person(){ this.name = "編程的人"; this.age = 20; } function Student(){ Person.call(this); this.school = "地球"; } var student = new Student(); //下面打印出來(lái): 編程的人,20,地球 console.log(student.name,student.age,student.school);
在這個(gè)例子里,Student函數(shù)繼承了Person的name和age屬性,就是通過(guò)Person.call(this)來(lái)實(shí)現(xiàn),理解上面的例子后,應(yīng)該是不難理解的.所以Student即擁有了Person的特點(diǎn),又有自己的個(gè)性,比如這個(gè)this.school.
在這里,我們沒(méi)有涉及到加入?yún)?shù)的傳遞,是方便大家的理解,需要加入?yún)?shù)傳遞,大家可以敲代碼試一試,看看效果怎么樣!
我們就先講這兩個(gè)例子吧,之后再進(jìn)行深入學(xué)習(xí)。
相關(guān)文章
javascript和jquery實(shí)現(xiàn)設(shè)置和移除文本框默認(rèn)值效果代碼
這篇文章主要介紹了javascript和jquery實(shí)現(xiàn)設(shè)置和移除文本框默認(rèn)值效果代碼,本文實(shí)現(xiàn)的是類似html5 placeholder(空白提示)一種效果,需要的朋友可以參考下2015-01-01微信小程序中button去除默認(rèn)的邊框?qū)嵗a
這篇文章主要介紹了微信小程序中button去除默認(rèn)的邊框的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08非jQuery實(shí)現(xiàn)照片散落桌子上,單擊放大的LightBox效果
本文給大家介紹一款js實(shí)現(xiàn)的照片散落桌子上點(diǎn)擊放大圖片的LightBox效果,非常的炫酷,而且是非jQuery實(shí)現(xiàn)的,有需要的小伙伴可以參考下2014-11-11純?cè)鷍s實(shí)現(xiàn)table表格的增刪
本文主要介紹了純?cè)鷍avascript實(shí)現(xiàn)table表格的增刪的方法,文章底部提供了完整的代碼。需要的朋友一起來(lái)看下吧2017-01-01JS中的算法與數(shù)據(jù)結(jié)構(gòu)之二叉查找樹(shù)(Binary Sort Tree)實(shí)例詳解
這篇文章主要介紹了JS中的算法與數(shù)據(jù)結(jié)構(gòu)之二叉查找樹(shù)(Binary Sort Tree),結(jié)合實(shí)例形式詳細(xì)分析了二叉查找樹(shù)(Binary Sort Tree)的原理、定義、遍歷、查找、插入、刪除等常見(jiàn)操作技巧,需要的朋友可以參考下2019-08-08javascript檢測(cè)頁(yè)面是否縮放的小例子
簡(jiǎn)單寫(xiě)了下,只測(cè)試了chrome,道理很簡(jiǎn)單,其他瀏覽器自行擴(kuò)充。2013-05-05JS中call/apply、arguments、undefined/null方法詳解
這篇文章主要介紹了JS中call/apply、arguments、undefined/null方法詳解的相關(guān)資料,需要的朋友可以參考下2016-02-02