<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面向對象基礎與this指向問題的具體分析

        來源:懂視網 責編:小OO 時間:2020-11-27 20:12:00
        文檔

        JavaScript面向對象基礎與this指向問題的具體分析

        前 言;的程序語言經歷了從“面向機器”、到“面向過程”、再到“面向對象”的一個過程。而JavaScript是一門基于對象的一門語言,它介于面向過程與面向對象之間。在學習JavaScript的過程中,OOP是非常重要的一環,下面我們來一起探討一下JS中的面向對象吧。1 、OOP的基礎問題。1.1什么是面向過程和面向對象。面向過程:專注于如何去解決一個問題的過程步驟。編程特點是由一個個的函數去實現每一步的過程步驟,沒有類和對象的概念。面向對象:專注于由哪一個對象來解決這個問題。編程特點是出現了一個個的類,從類中拿到這個對象,由這個對象去解決具體的問題。
        推薦度:
        導讀前 言;的程序語言經歷了從“面向機器”、到“面向過程”、再到“面向對象”的一個過程。而JavaScript是一門基于對象的一門語言,它介于面向過程與面向對象之間。在學習JavaScript的過程中,OOP是非常重要的一環,下面我們來一起探討一下JS中的面向對象吧。1 、OOP的基礎問題。1.1什么是面向過程和面向對象。面向過程:專注于如何去解決一個問題的過程步驟。編程特點是由一個個的函數去實現每一步的過程步驟,沒有類和對象的概念。面向對象:專注于由哪一個對象來解決這個問題。編程特點是出現了一個個的類,從類中拿到這個對象,由這個對象去解決具體的問題。

        下面小編就為大家帶來一篇老生常談JavaScript面向對象基礎與this指向問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

        前 言

        我們的程序語言經歷了從“面向機器”、到“面向過程”、再到“面向對象”的一個過程。而JavaScript是一門基于對象的一門語言,它介于面向過程與面向對象之間。在學習JavaScript的過程中,OOP是非常重要的一環,下面我們來一起探討一下JS中的面向對象吧!!!

        1 、OOP的基礎問題

        1.1什么是面向過程和面向對象?

        面向過程:專注于如何去解決一個問題的過程步驟。編程特點是由一個個的函數去實現每一步的過程步驟,沒有類和對象的概念。

        面向對象:專注于由哪一個對象來解決這個問題。編程特點是出現了一個個的類,從類中拿到這個對象,由這個對象去解決具體的問題。

        對于調用者來說,面向過程需要調用者自己去實現各種函數。而面向對象,只需要告訴調用者對象中具體方法的功能,而不需要調用者了解方法中的實現細節。

        1.2面向對象的三大特征

        繼承、封裝、多態

        1.3類和對象的關系

        ① 類:一類具有相同特征(屬性)和行為(方法)的集合。

        比如:人類-->屬性:身高、體重、性別 方法:吃飯、說話、走路

        ② 對象:從類中,拿出具有確定屬性值和方法的個體。

        比如:張三-->屬性:身高180、體重180 方法:說話-->我叫張三,身高180

        ③ 類和對象的關系

        類是抽象的,對象是具體的(類是對象的抽象化,對象是類的具體化)

        解釋一下:

        類是一個抽象的概念,只能說類有屬性和方法,但是不能給屬性賦具體的值。比如說人類有姓名,但是不能說人類的姓名叫啥。。

        對象是一個具體的個例,是將類中的屬性進行具體賦值而來的個體。比如說張三是人類的一個個體,可以說張三的姓名叫張三。也就是張三對人類的每一個屬性進行了具體的賦值,那么張三就是由人類產生的一個對象。

        2、 JavaScript中的面向對象

        2.1創建類和對象的步驟

        ①創建一個類(構造函數):類名必須使用大駝峰法則,即每個單詞的首字母必須大寫。

        function 類名(屬性1){
         this.屬性1 = 屬性1;
         this.方法 = function(){
         //方法中要調用自身屬性,必須要使用this.屬性
         }
        }

        ②通過類,實例化(new)出一個對象。

        var obj = new 類名(屬性1的具體值);

        obj.屬性; 調用屬性

        obj.方法(); 調用方法

        ③注意事項

        >>>通過類名,new出一個對象的過程,叫做“類的實例化”

        >>>類中的this,會在實例化的時候,指向新new出的對象。所以,this.屬性 this.方法,實際上是將屬性和方法綁定在即將new出的對象上面。

        >>>在類中,要調用自身屬性,必須使用this.屬性名、如果直接使用變量名,則無法訪問對應的屬性。

        >>>類名必須使用大駝峰法則,注意與普通函數的區別。

        2.2兩個重要屬性constructor和instanceof

        ①constructor:返回當前對象的構造函數

        >>>zhangsan.constructor = Person; √

        ②instanceof:檢測一個對象,是不是一個類的實例;

        >>>lisi instanceof Person √ lisi是通過Person類new出的

        >>>lisi instanceof Object √ 所有對象都是Object的實例

        >>>Person instanceof Object √ 函數本身也是對象

        3、 JavaScript中的this指向問題

        在上一部分中,我們創建了一個類,并通過這個類new出了一個對象。 但是,這里面出現了大量的this。 很多同學就要懵逼了,this不是“這個”的意思嗎?為什么我在函數里面寫的this定義的屬性,最后到了函數new出的對象呢??

        3.1誰最終調用函數,this就指向誰!

        ① this指向誰,不應該考慮函數在哪聲明,而應該考慮函數在哪調用!!

        ② this指向的,永遠只可能是對象,不可能是函數!!

        ③ this指向的對象,叫做函數的上下文context,也叫函數的調用者。

        3.2this指向的規律(與函數的調用方式息息相關!)

        ① 通過函數名()調用的,this永遠指向window

        func(); // this--->window
        //【解釋】 我們直接用一個函數名()調用,函數里面的this,永遠指向window。

        ② 通過對象.方法調用的,this指向這個對象

        // 狹義對象
         var obj = {
         name:"obj",
         func1 :func
         };
         obj.func1(); // this--->obj
        //【解釋】我們將func函數名,當做了obj這個對象的一個方法,然后使用對象名.方法名, 這時候函數里面的this指向這個obj對象。
        
         // 廣義對象
         document.getElementById("p").onclick = function(){
         this.style.backgroundColor = "red";
        }; // this--->p
        //【解釋】對象打點調用還有一個情況,我們使用getElementById取到一個p控件,也是一種廣義的對象,用它打點調用函數,則函數中的this指向這個p對象。

        ③ 函數作為數組的一個元素,用數組下標調用,this指向這個數組

        var arr = [func,1,2,3];
        arr[0](); // this--->arr
        //【解釋】這個,我們把函數名,當做數組中的一個元素。使用數組下標調用,則函數中的this將指向這個數組arr。

        ④ 函數作為window內置函數的回調函數使用,this指向window。比如setTimeout、setInterval等

        setTimeout(func,1000);// this--->window
        //setInterval(func,1000);
        //【解釋】使用setTimeout、setInterval等window內置函數調用函數,則函數中的this指向window。

        ⑤ 函數作為構造函數,使用new關鍵字調用,this指向新new出的對象

        var obj = new func(); //this--->new出的新obj
        //【解釋】這個就是第二部分我們使用構造函數new對象的語句,將函數用new關鍵字調用,則函數中的this指向新new出的對象。

        3.3關于this問題的面試題

        var fullname = 'John Doe';
        var obj = {
          fullname: 'Colin Ihrig',
          prop: {
            fullname: 'Aurelio De Rosa',
            getFullname: function() {
              return this.fullname;
            }
          }
        };
        console.log(obj.prop.getFullname()); 
        // 函數的最終調用者 obj.prop 
         
        var test = obj.prop.getFullname;
        console.log(test()); 
        // 函數的最終調用者 test() this-> window
         
        obj.func = obj.prop.getFullname;
        console.log(obj.func()); 
        // 函數最終調用者是obj
         
        var arr = [obj.prop.getFullname,1,2];
        arr.fullname = "JiangHao";
        console.log(arr[0]());
        // 函數最終調用者數組

        好了,這篇博客,我們了解了什么是面向對象、類和對象的關系、JS中聲明類與對象的步驟,以及重點講解的this指向問題! 希望能夠幫助大家真正的理解了this的認知,下面我會繼續給大家分享關于面向對象方面的問題。多謝大家的支持!!!

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

        文檔

        JavaScript面向對象基礎與this指向問題的具體分析

        前 言;的程序語言經歷了從“面向機器”、到“面向過程”、再到“面向對象”的一個過程。而JavaScript是一門基于對象的一門語言,它介于面向過程與面向對象之間。在學習JavaScript的過程中,OOP是非常重要的一環,下面我們來一起探討一下JS中的面向對象吧。1 、OOP的基礎問題。1.1什么是面向過程和面向對象。面向過程:專注于如何去解決一個問題的過程步驟。編程特點是由一個個的函數去實現每一步的過程步驟,沒有類和對象的概念。面向對象:專注于由哪一個對象來解決這個問題。編程特點是出現了一個個的類,從類中拿到這個對象,由這個對象去解決具體的問題。
        推薦度:
        標簽: js 具體的 javascript
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费一级毛片不卡在线播放| 在线永久免费的视频草莓| 午夜神器成在线人成在线人免费| 亚洲成人福利在线观看| 最近新韩国日本免费观看| 精品亚洲国产成AV人片传媒| 久久综合九色综合97免费下载| 亚洲国产精品无码久久一区二区 | 乱爱性全过程免费视频| 免费一级毛片在级播放| 日韩成人毛片高清视频免费看| 亚洲av无码不卡私人影院| 成人免费视频一区二区| 亚洲愉拍99热成人精品热久久| 成人爽a毛片免费| 久久精品国产精品亚洲毛片| 国产免费的野战视频| 亚洲精品无码永久在线观看男男| 免费观看大片毛片| 国产成人无码精品久久久久免费 | 国产真人无码作爱免费视频| 亚洲国产成人久久综合一| 91精品免费高清在线| 久久夜色精品国产噜噜亚洲a| 日韩免费高清视频网站| 72pao国产成视频永久免费| 亚洲va在线va天堂va888www| 99无码人妻一区二区三区免费| 亚洲人成色4444在线观看| 亚洲免费日韩无码系列 | 亚洲中文字幕无码av永久| 国产一卡二卡≡卡四卡免费乱码 | 在线观看国产区亚洲一区成人| 毛片在线全部免费观看| 亚洲人成免费网站| 亚洲第一区精品日韩在线播放| 日本在线免费观看| 亚洲色无码专区一区| 亚洲精品美女久久777777| 日本亚洲免费无线码| 西西人体免费视频|