js call用處,js中apply 和call 方法有用嗎?用處不大我就不深究了。

時間 2021-07-18 19:42:18

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...