<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript中的普通函數與構造函數比較_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 21:36:54
        文檔

        JavaScript中的普通函數與構造函數比較_javascript技巧

        JavaScript中的普通函數與構造函數比較_javascript技巧:問題 什么是構造函數? 構造函數與普通函數區別是什么? 用new關鍵字的時候到底做了什么? 構造函數有返回值怎么辦? 構造函數能當普通函數調用嗎? 以下是我的一些理解,理解錯誤的地方懇請大家幫忙指正,謝謝! this this永遠指向當前正在被執行的函數或方
        推薦度:
        導讀JavaScript中的普通函數與構造函數比較_javascript技巧:問題 什么是構造函數? 構造函數與普通函數區別是什么? 用new關鍵字的時候到底做了什么? 構造函數有返回值怎么辦? 構造函數能當普通函數調用嗎? 以下是我的一些理解,理解錯誤的地方懇請大家幫忙指正,謝謝! this this永遠指向當前正在被執行的函數或方

        問題

        什么是構造函數?
        構造函數與普通函數區別是什么?
        用new關鍵字的時候到底做了什么?
        構造函數有返回值怎么辦?
        構造函數能當普通函數調用嗎?

        以下是我的一些理解,理解錯誤的地方懇請大家幫忙指正,謝謝!

        this
        this永遠指向當前正在被執行的函數或方法的owner。例如:

        上面這段代碼中,我們在頁面中定義了一個test()函數,然后在頁面中調用。函數定義在全局時,其owner就是當前頁面,也就是window對象。

        this指向的幾種情況

        1.全局中調用

        this.name //this指向window對象

        2.函數調用

        test();//test()函數中的this也指向window對象

        3.對象的方法調用

        obj1.fn();//obj1對象的fn()方法中的this指向obj1

        4.調用構造函數
        var dog=new Dog();//構造函數內的this指向新創建的實例對象,也就是這里的dogcall和apply

        call和apply的作用一樣,只是接受參數的方式不一樣,call接受的是多個單個參數,apply接受的是參數數組。
        call和apply的作用簡單地可以說成,當一個對象實例缺少一個函數/方法時,可以調用其他對象的現成函數/方法,其方式是通過替換其中的this為這個對象實例,改變函數運行時的上下文。
        例如:

        現在我有另外一個cat對象:

        var cat={sound:'喵喵喵'}

        我也想讓這個cat對象可以調用bark方法,這時候就不用重新為它定義bark方法了,可以用call/apply調用Dog類的bark方法:

        Dog.prototype.bark.call(cat);

        或者:

        dog.bark.call(cat);

        加點東西,變成一個帶參數的栗子:

        普通函數
        這是一個簡單的普通函數:

        普通函數與構造函數相比有四個明顯特點:

        1.不需要用new關鍵字調用

        fn();2.可以用return語句返回值

        3.函數內部不建議使用this關鍵字
        我們說不建議使用,當然硬要用是可以的,只是要注意這時候發生了什么。如果在普通函數內部使用this關鍵字定義變量或函數,因為這時候this指向的是window全局對象,這樣無意間就會為window添加了一些全局變量或函數。

        4.函數命名以駝峰方式,首字母小寫

        構造函數
        在JavaScript中,用new關鍵字來調用定義的構造函數。默認返回的是一個新對象,這個新對象具有構造函數定義的變量和函數/方法。

        舉個栗子:

        與普通函數相比,構造函數有以下明顯特點:

        1.用new關鍵字調用

        var prince=new Prince("charming",25);

        2.函數內部可以使用this關鍵字
        在構造函數內部,this指向的是構造出的新對象。用this定義的變量或函數/方法,就是實例變量或實例函數/方法。需要用實例才能訪問到,不能用類型名訪問。

        prince.age;//25
        Prince.age;//undefined

        3.默認不用return返回值
        構造函數是不需要用return顯式返回值的,默認會返回this,也就是新的實例對象。當然,也可以用return語句,返回值會根據return值的類型而有所不同,細節將在下文介紹。

        4.函數命名建議首字母大寫,與普通函數區分開。
        不是命名規范中的,但是建議這么寫。

        使用new關鍵字實例化的時候發生了什么?
        以上文中的Prince()函數舉個栗子:

        1.第一步,創建一個空對象。

        var prince={}

        2.第二步,將構造函數Prince()中的this指向新創建的對象prince。
        3.第三步,將prince的_proto_屬性指向Prince函數的prototype,創建對象和原型間關系
        4.第四步,執行構造函數Prince()內的代碼。

        構造函數有return值怎么辦?
        構造函數里沒有顯式調用return時,默認是返回this對象,也就是新創建的實例對象。
        當構造函數里調用return時,分兩種情況:

        1.return的是五種簡單數據類型:String,Number,Boolean,Null,Undefined。
        這種情況下,忽視return值,依然返回this對象。

        2.return的是Object
        這種情況下,不再返回this對象,而是返回return語句的返回值。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript中的普通函數與構造函數比較_javascript技巧

        JavaScript中的普通函數與構造函數比較_javascript技巧:問題 什么是構造函數? 構造函數與普通函數區別是什么? 用new關鍵字的時候到底做了什么? 構造函數有返回值怎么辦? 構造函數能當普通函數調用嗎? 以下是我的一些理解,理解錯誤的地方懇請大家幫忙指正,謝謝! this this永遠指向當前正在被執行的函數或方
        推薦度:
        標簽: 普通的 js 函數
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 黄色a级片免费看| 亚洲中文字幕AV每天更新| 久久成人国产精品免费软件| 亚洲AV中文无码乱人伦| 亚洲中文字幕无码不卡电影| 91久久亚洲国产成人精品性色 | 国产91成人精品亚洲精品| 女人毛片a级大学毛片免费| 日韩在线看片免费人成视频播放| 免费人妻av无码专区| 亚洲天堂视频在线观看| 亚欧免费一级毛片| 337p欧洲亚洲大胆艺术| 日韩欧毛片免费视频| 亚洲小说图区综合在线| 国产做床爱无遮挡免费视频| 一级白嫩美女毛片免费| 在线看片免费不卡人成视频 | 嫩草影院免费观看| 亚洲AV成人精品一区二区三区| 免费乱码中文字幕网站| 国产亚洲精品免费视频播放 | 亚洲av日韩综合一区久热| 国产免费私拍一区二区三区| 国产精品极品美女自在线观看免费| 日本红怡院亚洲红怡院最新| 亚洲av综合日韩| 曰韩亚洲av人人夜夜澡人人爽| 84pao强力永久免费高清| 亚洲色偷偷偷综合网| 国产乱辈通伦影片在线播放亚洲| 男人j进入女人j内部免费网站| 亚洲另类春色校园小说| 免费va人成视频网站全| 久久久久成人片免费观看蜜芽| 91亚洲自偷在线观看国产馆| 成人亚洲综合天堂| 国产亚洲漂亮白嫩美女在线| 亚洲国产精品无码久久一区二区| 中字幕视频在线永久在线观看免费 | 久久久久亚洲av无码专区喷水|