本篇文章為大家展示了call和apply怎么在javascript中使用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元達(dá)拉特做網(wǎng)站,已為上家服務(wù),為達(dá)拉特各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
1、js屬于一種解釋性腳本語(yǔ)言;2、在絕大多數(shù)瀏覽器的支持下,js可以在多種平臺(tái)下運(yùn)行,擁有著跨平臺(tái)特性;3、js屬于一種弱類型腳本語(yǔ)言,對(duì)使用的數(shù)據(jù)類型未做出嚴(yán)格的要求,能夠進(jìn)行類型轉(zhuǎn)換,簡(jiǎn)單又容易上手;4、js語(yǔ)言安全性高,只能通過(guò)瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互,從而有效地防止數(shù)據(jù)的丟失;5、基于對(duì)象的腳本語(yǔ)言,js不僅可以創(chuàng)建對(duì)象,也能使用現(xiàn)有的對(duì)象。
實(shí)踐一:call,apply 用來(lái)讓一個(gè)對(duì)象去調(diào)用本不屬于自己的方法,兩者都可以傳遞參數(shù),call的參數(shù)是列表形式,apply的參數(shù)是數(shù)組形式
var person = { "name":"Tom", "say":function(){ console.log("person say"); }, "count":function(x,y,z){ console.log('x= ' + x + ', y= ' + y + ', z= ' + z); }, "sayName":function(){ console.log(this.name); } } // 下面的示例是數(shù)組 arr 去調(diào)用person的say方法 , 這里call用來(lái)讓數(shù)組調(diào)用本不屬于它自己的方法 var arr = [1,2]; person.say.call(arr); // call 還可以傳遞參數(shù) person.count.call(arr,1,2,3); // x= 1, y= 2, z= 3 // apply 還可以這樣 person.count.apply(arr,[1,2,3]); // x= 1, y= 2, z= 3
實(shí)踐二:call,apply 用來(lái)修改this, 同樣引用上例的person對(duì)象
var program = {"name":"AlphaGo"} person.sayName.call(program); // AlphaGo person.sayName.apply(program); // AlphaGo
實(shí)踐三:call,apply把偽數(shù)組轉(zhuǎn)換為數(shù)組
// call,apply 把偽數(shù)組轉(zhuǎn)換為數(shù)組 var wArr = {0:"hello",1:"world","length":2}; var arr1 = Array.prototype.slice.call(wArr); var arr2 = Array.prototype.slice.apply(wArr); console.log(arr1); // [hello,world] console.log(arr2); // [hello,world]
這里找到一篇詳細(xì)的 關(guān)于偽數(shù)組的文章
實(shí)踐四:單純的arguments對(duì)象
// 有關(guān)arguments function count(a,b,c){ console.log(arguments.length); if(count.length === arguments.length) { console.log('實(shí)際參數(shù)與形參個(gè)數(shù)相同'); }else{ console.log('實(shí)際參數(shù)與形參個(gè)數(shù)不同'); } } count(1,2,3); // 實(shí)際參數(shù)與形參個(gè)數(shù)相同 count(1,2); // 實(shí)際參數(shù)與形參個(gè)數(shù)不同 /* 這里count.length 表示形參個(gè)數(shù) arguments.length 表示實(shí)參個(gè)數(shù) */
實(shí)踐五:caller 用于查看,函數(shù)本身被哪個(gè)函數(shù)調(diào)用
function fn1(){ if(fn1.caller){ console.log(fn1.caller.name + " 是函數(shù)fn1的調(diào)用者"); }else{ console.log("直接執(zhí)行"); } } function fn2(){ fn1(); }; fn2(); // fn2是是函數(shù)fn1的調(diào)用者
實(shí)踐六:callee 返回正被執(zhí)行的 Function 對(duì)象,常用于匿名函數(shù)的遞歸與arguments一起配合使用。
var sum = function(n){ if(n>0) { return n + arguments.callee(n-1); } return 0; }; var total = sum(10); console.log(total); // 55 // arguments.callee 代指函數(shù)自身。 function test(){ console.log(arguments.callee); } test(); // 輸出函數(shù)自身的字符串表達(dá)式
上述內(nèi)容就是call和apply怎么在javascript中使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。