国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

原型模式故事鏈(3)--JS的數據類型、以及區別、區分、轉化

RiverLi / 1865人閱讀

摘要:所以不論你媽媽是喊,狗蛋回家吃飯了,還是喊小明回家吃飯了,其實喊的都是你。當然的嘛狗蛋買了件新衣服,小明當然就有這件新衣服了。。。

上一章--原型鏈講解:傳送門:https://segmentfault.com/a/11...

在上一章講解原型鏈時提到了:所有的引用類型都有一個_proto_屬性,稱之為隱式原型。
那么引用類型是什么鬼?

盡量簡單的講解一下javascript中的數據類型:
在JS中有兩大數據類型:
1.基本數據類型,也稱為值類型
2.復雜數據類型,也成為引用類型

值類型:Number、String、Boolean、Null、Undefined
引用類型:Object、Array、Function

所以JS一共有8種數據類型

那么為什么要區分為值類型和引用類型呢?它們有什么不同之處
客官且看:
值類型是值的“復制”,以值類型中的Number類型為例。

    var num = 100;
    var num2 = num;
        num = 200;
    console.log(num2);//100
    console.log(num);//200

在上述代碼中,第2行就是把num的值100復制給num2,num2的值就為100了。在第3行num的值再變化為200時與num2已經沒關系了。

引用類型是值“傳遞”,以引用類型中的Object類型為例。

    //例1:
    var obj = {a:100};
    var obj2 = obj;
    obj.a = 200;
    console.log(obj2.a);//{a:200}
    console.log(obj.a);//{a:200}

    //例2:
    var arr = [1,2];
    var arr2 = arr;
    arr2[0] = 3;
    console.log(arr);//[3,2]
    console.log(arr2);//[3,2]

在上述代碼中,例1第2行代碼中,把obj的值傳遞給obj2,在這里obj2只是obj的一個別名!

什么意思呢?就是說你叫做小明,你媽媽叫你狗蛋,狗蛋就是你的別名。所以不論你媽媽是喊,狗蛋回家吃飯了,還是喊小明回家吃飯了,其實喊的都是你。所有obj和obj2其實是指向同一內存地址的,他們就是同一個東西,當其中一個變了,另一個當然也隨著變化。

從例1和例2中可以看出obj變化了會對obj2影響,arr2變化了arr也變化了。當然的嘛!狗蛋買了件新衣服,小明當然就有這件新衣服了。。。

如何判斷一個變量是什么數據類型呢?
typeof()可以查看值類型所有數據類型,能區分出引用類型的Function,但是對于引用類型的Object和Array酒不能區分,都會顯示為Object.
null是個特殊的東西,會顯示為object,有興趣的可以去看看,這里不多說。

那怎么區分出數組呢?答案是:instanceof
如:a instanceof Array 只有當a是數組時才會是true.

    var a = 5;
    var b = "abc";
    var c = null;
    var d = undefined;

    console.log(typeof(a))//number
    console.log(typeof(b))//string
    console.log(typeof(c))//object
    console.log(typeof(d))//undefined


    var obj = {a:1}
    var arr = [1,2]
    var fn = function(){
        console.log("hello");
    }
    console.log(typeof(obj))//object
    console.log(typeof(arr))//object
    console.log(typeof(fn))//function

    
    console.log(arr instanceof Object)//true
    console.log(obj instanceof Object)//true

    console.log(arr instanceof Array)//true
    console.log(obj instanceof Array)//false

    console.log(arr instanceof Number)//false

    

數據類型轉換:
數據類型的轉換有兩種:隱式轉換、強制轉換
隱式轉換:隱式轉換通常發生在運算中。

    var num = 10;
    var obj = "20"
    var res = num + obj;//10+"20"
    console.log(res) //"1020"

    var obj2 = "11";
    var num2 = 5;
    var res2 = obj2 > num2;//"11">5
    console.log(res2)//true

強制轉換:一般用String()、Number()、Boolean()轉化(可能會有失精度)

var num = 123;
console.log(typeof(num))//number
console.log(typeof (String(num)))//string

例行總結:
數據類型是JS中很重要的一部分,特別是值類型和引用類型的賦值區別。一定要理解好~

下一回:變量提升與函數聲明

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/114098.html

相關文章

  • 原型模式故事(3)--JS數據類型以及區別區分轉化

    摘要:所以不論你媽媽是喊,狗蛋回家吃飯了,還是喊小明回家吃飯了,其實喊的都是你。當然的嘛狗蛋買了件新衣服,小明當然就有這件新衣服了。。。 上一章--原型鏈講解:傳送門:https://segmentfault.com/a/11... 在上一章講解原型鏈時提到了:所有的引用類型都有一個_proto_屬性,稱之為隱式原型。那么引用類型是什么鬼? 盡量簡單的講解一下javascript中的數據類...

    stdying 評論0 收藏0
  • 原型模式故事(3)--JS數據類型以及區別區分轉化

    摘要:所以不論你媽媽是喊,狗蛋回家吃飯了,還是喊小明回家吃飯了,其實喊的都是你。當然的嘛狗蛋買了件新衣服,小明當然就有這件新衣服了。。。 上一章--原型鏈講解:傳送門:https://segmentfault.com/a/11... 在上一章講解原型鏈時提到了:所有的引用類型都有一個_proto_屬性,稱之為隱式原型。那么引用類型是什么鬼? 盡量簡單的講解一下javascript中的數據類...

    saucxs 評論0 收藏0
  • 如何繼承Date對象?由一道題徹底弄懂JS繼承。

    摘要:前言見解有限,如有描述不當之處,請幫忙及時指出,如有錯誤,會及時修正。倘若用的是中文搜索。所以最終的實例對象仍然能進行正常的原型鏈回溯,回溯到原本的所有原型方法這樣通過一個巧妙的欺騙技巧,就實現了完美的繼承。 前言 見解有限,如有描述不當之處,請幫忙及時指出,如有錯誤,會及時修正。 20180201更新: 修改用詞描述,如組合寄生式改成寄生組合式,修改多處筆誤(感謝@Yao Ding的...

    sunnyxd 評論0 收藏0
  • 原型模式故事(2)--原型四大理論

    摘要:所有引用類型的隱式原型指向它構造函數的顯式原型。理論就不驗證了,寫原型模式時。原型模式構造函數原型實例化橘貓魚呀魚橘貓魚呀魚在上述代碼中,在之后就相當于這個函數。 上一章:new一個對象的過程 https://segmentfault.com/a/11... 原型鏈4大理論:1.所有的引用類型都有一個_proto_屬性,稱之為隱式原型。 2.所有的函數(Function)都有一個pro...

    MRZYD 評論0 收藏0

發表評論

0條評論

RiverLi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<