摘要:網(wǎng)上對于和的解釋已經(jīng)非常多了,但是感覺看完之后,還不是特別理解其作用。對于最直接的理解就是繼承。說太多反而不好理解。
網(wǎng)上對于call和apply的解釋已經(jīng)非常多了,但是感覺看完之后,還不是特別理解其作用。
對于call、apply最直接的理解就是繼承。
我們在面向?qū)ο缶幊痰臅r(shí)候,經(jīng)常會(huì)這樣寫:
function People(name){ this.name = name } People.prototype={ food:"fish", say: function(){ console.log("My Name is "+ this.name +",I love "+this.food); } }
var people = new People("www.ghugo.com"); people.say();
以上代碼應(yīng)該很好理解,這時(shí)如果我們有一個(gè)對象:
hugo2 = {food : "bone"}
我們不想對它重新定義say方法,那么我們可以通過call或apply用People的say方法:
people.say.call(hugo2,"hugo");
也就相當(dāng)于是這樣調(diào)用:
hugo2.say() //偽代碼,僅作為代碼理解用
使用call,也就可以把上面的代碼等價(jià)于下面的代碼:
hugo2 = { food : "bone", say: function(){ console.log("My Name is "+ this.name +",I love "+this.food); } } hugo2.say();
可以看出函數(shù)調(diào)用的三種方式:
obj.myFunc(); myFunc.call(obj,arg); myFunc.apply(obj,[arg1,arg2..]);
用通俗的話總結(jié)一下:就是用別人的東西,所以要call一下
另外,apply和call還有一個(gè)作用是改變this的指向,這個(gè)網(wǎng)上已經(jīng)大把解釋了,自行g(shù)oogle一下吧。說太多反而不好理解。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78448.html
摘要:用的比較多的,通過選擇的節(jié)點(diǎn)是一種類似的。它不能應(yīng)用下的等方法。和都是為了改變某個(gè)函數(shù)運(yùn)行時(shí)的即上下文而存在的,換句話說,就是為了改變函數(shù)體內(nèi)部的指向。這些的話也就能明白它倆的用處以及它們定義。 要明白call以及apply 首先得知道他們的用法如何有什么用 function cat() {} cat.prototype = { foo...
摘要:理解文章中已經(jīng)比較全面的分析了在中的指向問題,用一句話來總結(jié)就是的指向一定是在執(zhí)行時(shí)決定的,指向被調(diào)用函數(shù)的對象。與和直接執(zhí)行原函數(shù)不同的是,返回的是一個(gè)新函數(shù)。這個(gè)新函數(shù)包裹了原函數(shù),并且綁定了的指向?yàn)閭魅氲摹? 理解 JavaScript this 文章中已經(jīng)比較全面的分析了 this 在 JavaScript 中的指向問題,用一句話來總結(jié)就是:this 的指向一定是在執(zhí)行時(shí)決定的,...
摘要:輸出的作用與和一樣,都是可以改變函數(shù)運(yùn)行時(shí)上下文,區(qū)別是和在調(diào)用函數(shù)之后會(huì)立即執(zhí)行,而方法調(diào)用并改變函數(shù)運(yùn)行時(shí)上下文后,返回一個(gè)新的函數(shù),供我們需要時(shí)再調(diào)用。 前言 js中的call(), apply()和bind()是Function.prototype下的方法,都是用于改變函數(shù)運(yùn)行時(shí)上下文,最終的返回值是你調(diào)用的方法的返回值,若該方法沒有返回值,則返回undefined。這幾個(gè)方法...
摘要:第四點(diǎn)也要著重講下,記住構(gòu)造函數(shù)被操作,要讓正常作用最好不能在構(gòu)造函數(shù)里 4) this、new、call和apply的相關(guān)問題 講解this指針的原理是個(gè)很復(fù)雜的問題,如果我們從javascript里this的實(shí)現(xiàn)機(jī)制來說明this,很多朋友可能會(huì)越來越糊涂,因此本篇打算換一個(gè)思路從應(yīng)用的角度來講解this指針,從這個(gè)角度理解this指針更加有現(xiàn)實(shí)意義。 下面我們看看在ja...
摘要:原文鏈接參考深入理解原型和閉包完結(jié)王福朋博客園中的作用域詳解博客園 前言 王福朋老師的 JavaScript原型和閉包系列 文章看了不下三遍了,最為一個(gè)初學(xué)者,每次看的時(shí)候都會(huì)有一種 大徹大悟 的感覺,而看完之后卻總是一臉懵逼。原型與閉包 可以說是 JavaScirpt 中理解起來最難的部分了,當(dāng)然,我也只是了解到了一些皮毛,對于 JavaScript OOP 更是缺乏經(jīng)驗(yàn)。這里我想總...
閱讀 1465·2021-09-10 11:27
閱讀 2414·2019-08-30 15:53
閱讀 1333·2019-08-30 13:10
閱讀 2981·2019-08-30 11:09
閱讀 1092·2019-08-29 17:23
閱讀 672·2019-08-29 17:05
閱讀 2951·2019-08-29 15:10
閱讀 2349·2019-08-29 13:22