天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

理解Javascript_04_數(shù)據(jù)模型

  本文主要描述Javascript的數(shù)據(jù)模型,即對(duì)Javascript所支持的數(shù)據(jù)類型的一個(gè)全局概纜。文章比較的理論化,非常深入,因此不易理解,但務(wù)必對(duì)數(shù)據(jù)模型有一個(gè)映象,因?yàn)樗抢斫?a href=/itjie/Javajishu/ target=_blank class=infotextkey>Javascript對(duì)象模型與Javascript執(zhí)行模型的基礎(chǔ)。

  基本的數(shù)據(jù)類型

  原始類型(簡(jiǎn)單數(shù)據(jù)類型、基本數(shù)據(jù)類型)

  Undefined類型: 表示聲明了變量但未對(duì)其初始化時(shí)賦予該變量的值。undefined為Undefined類型下的唯一的一個(gè)值。

  Null類型:用于表示尚未存在的對(duì)象。Null類型下也只有一個(gè)專用值null。

  Boolean類型:有兩個(gè)值true和false,主要用于條件判斷,控制執(zhí)行流程。

  Number類型:代表數(shù)字(即包括32的整數(shù),也包括64位的浮點(diǎn)數(shù))

  String類型:用于代表字符串。

  注:關(guān)于undefined與null的關(guān)系,可以參見《理解Javascript_02_理解undefined和null》一文。

  對(duì)象:一個(gè)無序?qū)傩缘募希@些屬性的值為簡(jiǎn)單數(shù)據(jù)類型、對(duì)象或者函數(shù)。注:這里對(duì)象并不特指全局對(duì)象Object.

  函數(shù)函數(shù)是對(duì)象的一種,實(shí)現(xiàn)上內(nèi)部屬性[[Class]]值為"Function",表明它是函數(shù)類型,除了對(duì)象的內(nèi)部屬性方法外,還有 [[Construct]]、[[Call]]、[[Scope]]等內(nèi)部屬性。函數(shù)作為函數(shù)調(diào)用與構(gòu)造器(使用new關(guān)鍵字創(chuàng)建實(shí)例對(duì)象)的處理機(jī)制不一樣(Function對(duì)象除外),內(nèi)部方法[[Construct]]用于實(shí)現(xiàn)作為構(gòu)造器的邏輯,方法[[Call]]實(shí)現(xiàn)作為函數(shù)調(diào)用的邏輯。同上,這里的函數(shù)并不特指全局對(duì)象Function。

  注:關(guān)于函數(shù)與對(duì)象的關(guān)系可以引申出很多問題,現(xiàn)在可以不去深究函數(shù)實(shí)現(xiàn)內(nèi)部的細(xì)節(jié),這將在以后的文章中探討。

  注:"基本的數(shù)據(jù)類型"與"基本數(shù)據(jù)類型"的概念不一樣,"基本的數(shù)據(jù)類型"指的是最常用的數(shù)據(jù)類型,"基本數(shù)據(jù)類型"指的是原始類型(關(guān)于原始類型與引用類型的問題,具體可以參見《理解Javascript_01_理解內(nèi)存分配》一文)。

  內(nèi)置數(shù)據(jù)類型(內(nèi)置對(duì)象)

  Function: 函數(shù)類型的用戶接口。

  Object: 對(duì)象類型的用戶接口。

  Boolean, Number, String: 分別為這三種簡(jiǎn)單數(shù)值類型的對(duì)象包裝器,對(duì)象包裝在概念上有點(diǎn)類似C#/Java中的Box/Unbox。

  Date, Array, RegExp: 可以把它們看作是幾種內(nèi)置的擴(kuò)展數(shù)據(jù)類型。

  首先,F(xiàn)unction, Object, Boolean, Number, String, Date, Array, RegExp等都是JavaScript語言的內(nèi)置對(duì)象,它們都可以看作是函數(shù)的派生類型,例如Number instanceof Function為true,Number instanceof Object為true。在這個(gè)意義上,可以將它們跟用戶定義的函數(shù)等同看待。

  其次,它們各自可以代表一種數(shù)據(jù)類型,由JS引擎用native code或內(nèi)置的JS代碼實(shí)現(xiàn),是暴露給開發(fā)者對(duì)這些內(nèi)置數(shù)據(jù)類型進(jìn)行操作的接口。在這個(gè)意義上,它們都是一種抽象的概念,后面隱藏了具體的實(shí)現(xiàn)機(jī)制。在每一個(gè)提到Number, Function等單詞的地方,應(yīng)該迅速的在思維中將它們實(shí)例化為上面的兩種情況之一。

  數(shù)據(jù)類型實(shí)現(xiàn)模型描述

注:圖片來源于http://www.cnblogs.com/riccc

  Build-in *** data structure: 指JS內(nèi)部用于實(shí)現(xiàn)***類型的數(shù)據(jù)結(jié)構(gòu),由宿主環(huán)境(瀏覽器)提供,這些結(jié)構(gòu)我們基本上無法直接操作。

  Build-in *** object: 指JS內(nèi)置的Number, String, Boolean等這些對(duì)象,這是JS將內(nèi)部實(shí)現(xiàn)的數(shù)據(jù)類型暴露給開發(fā)者使用的接口。

  Build-in *** constructor: 指JS內(nèi)置的一些構(gòu)造器,用來構(gòu)造相應(yīng)類型的對(duì)象實(shí)例。它們被包裝成函數(shù)對(duì)象暴露出來,例如我們可以使用下面的方法訪問到這些函數(shù)對(duì)象:

//Passed in FF2.0, IE7, Opera9.25, Safari3.0.4//access the build-in number constructorvar number = new Number(123);var numConstructor1 = number.constructor; //orvar numConstructor2 = new Object(123).constructor;//both numConstructor1 and numConstructor2 are the build-in Number constructornumConstructor1 == numConstructor2 //result: true//access the build-in object constructorvar objConstructor1 = {}.constructor; //orvar objConstructor2 = new Object().constructor;//both objConstructor1 and objConstructor2 are the build-in Object constructorobjConstructor1==objConstructor2 //result: true

it知識(shí)庫理解Javascript_04_數(shù)據(jù)模型,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 一级毛片两人添下面 | 国产一区二区内射最近更新 | 亚洲精品无码不卡 | 亚洲精品乱码电影在线观看 | 交换娇妻呻吟声不停中文字幕 | 国产3级在线观看 | 空姐内射出白浆10p 空姐厕所啪啪啪 | 羞羞影院男女爽爽影院尤物 | 亚洲理论在线a中文字幕 | 欧美成人无码视频午夜福利 | 含羞草最新版本 | 日本无码欧美激情在线视频 | 脱女学小内内摸出水网站免费 | 国产系列视频二区 | 久久久精品成人免费看 | 亚洲第一成年网站视频 | 色琪琪久久热在线 | 红桃传媒少妇人妻网站无码抽插 | 亚洲乱码在线卡一卡二卡新区 | 国产福利视频一区二区 | 最近日本字幕MV免费观看在线 | 免费 高清 中文在线观看 | 日本少妇内射视频播放舔 | 老师掀开短裙让我挺进动态 | 中文字幕日本在线mv视频精品 | 精品国产福利在线视频 | 亚洲免费在线视频 | 美女叉腿掰阴大胆艺术照 | 欧美 日韩 无码 有码 在线 | 绝对诱惑在线试听 | 久久精品成人免费看 | 美女伊人网 | 桃花免费高清在线观看 | 午夜福利体验免费体验区 | 亚洲狠狠97婷婷综合久久久久 | 久热在线这里只有精品7 | 免费毛片在线播放 | 性生片30分钟 | 色综合五月激情综合色一区 | 永久免费观看视频 | 久就热视频精品免费99 |