當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
想起温习一下JS中的this apply call arguments
生活随笔
收集整理的這篇文章主要介紹了
想起温习一下JS中的this apply call arguments
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
很多時候講到語言入門,大家會認為就是要了解一下語言的語法、數據類型和常用函數。這一課對于所有的計算機專業的畢業生來說都可以自學,然而在最近的實踐中(帶了兩個實習生自學js),我發現他們在學習js的時候會被這幾個問題困擾:this指向、arguments為什么不是Array、apply的用途及如何實現。寫這篇文章是為了減少js新手被這幾個問題困擾的時間,希望給js新手一點幫助。
function Person(name){
??? this.name = name
}
var o = new Person('lisq')
這里this就指向o
Person('lisq')
這里this就指向window
alert(window.name) 或者 alert(name)
function Person(name){
??? alert(arguments.length)? //當前調用傳遞的幾個參數
}
alert(Person.length)??? //函數定義(期望)傳遞幾個參數
alert(arguments instanceof Array) //false
這一點和document.getElementsByTagName很像,它返回的也不是數組,但是具有length并且可以用索引訪問每一個元素。所以在需要范圍arguments中的一部分的時候,會聯想到數組的slice,但是又不能直接用arguments.slice(0, 2),只能用Array.prototype.slice.apply(arguments, [0, 2]),這里簡單說一下Prototype中的$A,它可以把arguments強制轉為一個數組對象,然后可以用很多擴展的自定義方法。
function f(args1, args2){
??? alert(this.name)
??? alert(arguments.length)
}
var o1 = {
??? name : 'lisq'
}
f.apply(o1)
var o2 = {
??? name : 'lufang'
}
f.apply(o2, [1, 2])
f.call(o2, "hello")
三個中要數arguments最容易理解了,但是我不理解為什么它不是一個數組。this指向結合對象冒充,可以實現代碼的靈活組裝。
轉載于:https://www.cnblogs.com/boolean/archive/2007/10/24/935949.html
總結
以上是生活随笔為你收集整理的想起温习一下JS中的this apply call arguments的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PotPlayer字幕动态纹理如何设置为
- 下一篇: 脑出血需要多少钱啊?