關於javascript中apply()和call()方法的區別
如果沒接觸過動態語言,以編譯型語言的思維方式去理解javaScript將會有種神奇而怪異的感覺,因為意識上往往不可能的事偏偏就發生了,甚至覺得不可理喻.如果在學JavaScript這自由而變幻無窮的語言過程中遇到這種感覺,那麼就從現在形始,請放下的您的”偏見”,因為這對您來説絕對是一片新大陸。好了,不給大家嘮嗑了,言歸正傳吧,先給大家講下apply和call方法的定義。
具體內容如下所示:
方法定義
call, apply都屬於otype的一個方法,它是JavaScript引擎內在實現的,因為屬於otype,所以每個Function對象實例,也就是每個方法都有call, apply屬性.既然作為方法的`屬性,那它們的使用就當然是針對方法的了.這兩個方法是容易混淆的,因為它們的作用一樣,只是使用方式不同.
call方法:
語法:call([thisObj[,arg1[, arg2[, [,]]]]])
定義:調用一個對象的一個方法,以另一個對象替換當前對象。
説明:
call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。
如果沒有提供 thisObj 參數,那麼 Global 對象被用作 thisObj。
apply方法:
語法:apply([thisObj[,argArray]])
定義:應用某一對象的一個方法,用另一個對象替換當前對象。
説明:
如果 argArray 不是一個有效的數組或者不是 arguments 對象,那麼將導致一個 TypeError。
如果沒有提供 argArray 和 thisObj 任何一個參數,那麼 Global 對象將被用作 thisObj, 並且無法被傳遞任何參數
call, apply作用就是借用別人的方法來調用,就像調用自己的一樣.
它們的不同之處:
apply:最多隻能有兩個參數——新this對象和一個數組 argArray。如果給該方法傳遞多個參數,則把參數都寫進這個數組裏面,當然,即使只有一個參數,也要寫進數組裏面。如果 argArray 不是一個有效的數組或者不是 arguments 對象,那麼將導致一個 TypeError。如果沒有提供 argArray 和 thisObj 任何一個參數,那麼 Global 對象將被用作 thisObj, 並且無法被傳遞任何參數。
call:則是直接的參數列表,主要用在js對象各方法互相調用的時候,使當前this實例指針保持一致,或在特殊情況下需要改變this指針。如果沒有提供 thisObj 參數,那麼 Global 對象被用作 thisObj。
更簡單地説,apply和call功能一樣,只是傳入的參數列表形式不同:如 (func1,var1,var2,var3)對應的apply寫法為:
y(func1,[var1,var2,var3])
如:
y(sub,[3,1]);//(sub,3,1);var a={n:1,m:2,add:function(){return this.n+this.m;}}var b={n:3,m:4}((b));//b.n+b.m=7function Animal(){ = "Animal"; Name = function(){ alert(); } }function Cat(){ = "Cat"; } var animal = new Animal(); var cat = new Cat(); //通過call或apply方法,將原本屬於Animal對象的showName()方法交給對象cat來使用了。 //輸入結果為"Cat" (cat,","); y(cat,[]);
以上內容是小編給大家介紹的apply和call方法定義及apply和call方法的區別,希望大家喜歡。
-
Dreamweaver跳轉菜單的方法技巧介紹
什麼是跳轉菜單:跳轉菜單是文檔內的彈出菜單,對站點訪問者可見,並列出鏈接到文檔或文件的選項。可以創建到整個Web站點內文檔的鏈接、到其它Web站點上文檔的鏈接、電子郵件鏈接、到圖形的鏈接,也可以創建到可在瀏覽器中打開的`任何文件類型的鏈接以下是小編為大家...
-
PHP開發工程師的具體職責
PHP開發工程師的具體職責1職責:1,負責設計產品的前後台技術框架;2,承擔系統的開發工作,改進框架,基礎架構,持續優化服務;3,承擔關鍵項目的技術評審及總體設計,參與構建系統原型及關鍵技術問題的攻關活動;4,控制產品設計質量,制定產品開發規範、指導或撰寫方案、設計等文檔;5,...
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
javascript中setInterval的用法總結
javascript中的setInterval的函數主要是在製作動畫或其他間隔性渲染(操作)效果時,對操作方法按照一定時間間隔進行調用的函數。setInterval的表達式格式主要有:setInterval(fnname,time,par1,par2,);setInterval(obj,fnname,time,par1,par2,);第一種是最常見的表達...
相關文章
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別
- 如何理解Javascript的caller,callee,call,apply區別