日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

想起温习一下JS中的this apply call arguments

發布時間:2023/12/1 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 想起温习一下JS中的this apply call arguments 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多時候講到語言入門,大家會認為就是要了解一下語言的語法、數據類型和常用函數。這一課對于所有的計算機專業的畢業生來說都可以自學,然而在最近的實踐中(帶了兩個實習生自學js),我發現他們在學習js的時候會被這幾個問題困擾:this指向、arguments為什么不是Array、apply的用途及如何實現。寫這篇文章是為了減少js新手被這幾個問題困擾的時間,希望給js新手一點幫助。

  • this
  • 指向當前對象,通常在對象的構造函數中使用,用來引用對象。如
    function Person(name){
    ??? this.name = name
    }
    var o = new Person('lisq')
    這里this就指向o
  • 對于JScript 的客戶版本,如果在其他所有對象的上下文之外使用,則它指的是window對象
    Person('lisq')
    這里this就指向window
    alert(window.name) 或者 alert(name)
  • arguments
  • 該對象代表正在執行的函數和調用它的函數的參數。如
    function Person(name){
    ??? alert(arguments.length)? //當前調用傳遞的幾個參數
    }
    alert(Person.length)??? //函數定義(期望)傳遞幾個參數
  • 需要說明的是arguments并不是一個數組,可用instanceof測試。
    alert(arguments instanceof Array) //false
    這一點和document.getElementsByTagName很像,它返回的也不是數組,但是具有length并且可以用索引訪問每一個元素。所以在需要范圍arguments中的一部分的時候,會聯想到數組的slice,但是又不能直接用arguments.slice(0, 2),只能用Array.prototype.slice.apply(arguments, [0, 2]),這里簡單說一下Prototype中的$A,它可以把arguments強制轉為一個數組對象,然后可以用很多擴展的自定義方法。
  • apply call (對象冒充)
  • apply 應用某一對象的一個方法,用另一個對象替換當前對象。
  • call??? 調用一個對象的一個方法,以另一個對象替換當前對象。
  • 其它沒有太多差別,除了傳遞參數的不同,下面提供一個例子:
    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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。