1樓:火之う鹿丸
給你舉個例子
定義陣列a裡有3個元素1,2,3,函式add()能向呼叫它的陣列壓入一個數,這個數是3個引數之內
和call的話是function.call(obj,arg[0],arg[1]……arg[n]);
引數是一個物件和引數列表
引數是一個物件和一個陣列型別的物件
在js中,call()方法和apply()方法到底該怎麼應用?
2樓:混在空氣裡
內部指標,即改變物件的this指向的內容;
詳細用法如下:
1.call()
語法:obj1.call(obj2[,param1,param2,...]);
定義:用obj2物件來代替obj1,呼叫obj1的方法。即將obj1應用到obj2上;
說明:call 方法可以用來代替另一個物件呼叫一個方法,call 方法可將一個函式的物件上下文從初始的上下文改變為由 obj2 指定的新物件,如果沒有提供 obj2引數,那麼 global 物件被用作 obj2。
3.基本用法
4.繼承特性
3樓:司馬唐遷
給樓主一個連結,看完絕對知道它們的用法:
js中關於call()方法的一個問題,如圖中所示,求高手詳解。
4樓:司馬唐遷
在分析這四種**前,首先得弄清楚,如果一個物件obj呼叫了f函式,這個obj會發生什麼樣的變化。
obj.f();
上面的**中物件obj呼叫了f函式,在f函式裡,第一句是this.a = 'a'。那麼這個this是指什麼?
如果你不清楚,那我直接說好了。this就是隻那個呼叫f函式的物件,顯然在這裡是obj。那麼this.
a = 'a'實際上就是obj.a = 'a',也就是說,obj多了一個屬性a,其值為a。同樣的道理,第二句**給obj新增了一個屬性b,其值是一個函式,alert出一個b。
明白了嗎?obj.f()的直接影響就是obj.a = 'a',obj.b = function()。
弄明白了obj.f()的影響,接下來要搞清楚的就是f.call(obj)是一種怎麼樣的呼叫。
如果你瞭解call這個函式,你可以知道的更多些;如果你不瞭解,希望你自己去仔細研究下,我這裡只能直接告訴你:
f.call(obj)相當於obj.f()
看到了嗎,這就是為什麼要先講清楚obj.f()的影響。因為f.call(obj)其實就是obj.f()。
此時再來看這四種呼叫。
第一種:
首先來看看第一句,根據前面的分析,我們知道,此時e.a = 'a'。那麼第二句幹了什麼呢?
第二句alert(a),顯然這a和e是沒有關係的,由於變數a事先沒有定義,在js中不能直接使用未定義的變數,alert(a)其實出錯了,所以你沒有看到任何反應。但如果你使用開發者工具,就能看到,這樣的寫法已經報錯了。錯誤的**,自然沒有任何反應。
第二種:
第二種比較繞,還是來看看它的呼叫過程吧。f.call(e.
t),這個e.t是什麼?因為e沒有t這個屬性,所以這句相當於f.
call(undefined)。當call函式的第一個引數是undefined或者null時,f.call(undefined)就相當於f(),也相當於window.
f()。那麼根據開頭的分析,這時f函式的呼叫者就是window了,也就是說window.a =' a'了。
第二句alert(a),顯然在函式e的作用域裡,變數a是不存在的,所以js會到window的作用域去查詢屬性a,而window的屬性a是有的,它的值是a,所以這個時候alert(a)就是alert(window.a),alert的結果就是a。
第三種:
我覺得看了前兩種呼叫的分析,你應該知道f.call(y.t)相當於什麼,它相當於y.
t.f(),但遺憾的是,y這個變數並沒有定義,無論是在函式e的作用域內還是window的作用域內,y都是不存在的,而使用一個未定義的變數,是一種錯誤的語句,所以帶三種呼叫和第一種一樣,是錯了,alert(a)根本就沒有執行,因此沒有任何反應;當然,就算執行了alert(a)也是錯的,它和第一種呼叫的錯誤就一樣了。
第四種:
第四種應該是比較容易理解的了。根據開頭的分析,f.call(e),e.a = 'a',這個沒有意見吧?所以第二句alert(e.a)就alert出了a。
5樓:匿名使用者
mark!
call 方法的目地是 將改變this指向 只要明白this的目標就知道!宿主!
js讀取Cookies,怎麼在js中讀取cookies
茂煙 簡單讀取 var the cookie document.cookie var broken cookies the cookie.split var the first broken cookies 0 var the name the first.split 0 var the value...
在js中是什麼意思,js中 是什麼意思
東東程式猿 本身沒有意思,jquery的裡面定義過 所以可以用,這就好比,你定義了一個function,寫法如下 function id 這樣你的js 中也可以用類似jquery中的寫法,id 嘿嘿,如果沒有引入jquery,自己這樣定義一個function,其實是很方便的。 jquery裡才有 原...
js中判斷是什麼型別的資料,js中判斷是什麼型別的資料typeof
泡泡糖 typeof算是最常見的了,使用它會返回一個字串,適合函式物件和基本型別 js中的基本型別 number string boolean null undefined object 物件 的判斷。console.log 測試number typeof 1 console.log 測試strin...