最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

理解Javascript_10_對象模型

 更新時間:2010年10月16日 00:06:20   作者:  
什么都不想說,一段代碼兩張圖,解釋一切。注:在此之前請閱讀前面的系列博文
對象模型

紅色虛線表示隱式Prototype鏈。
這張對象模型圖中包含了太多東西,不少地方需要仔細體會,可以寫些測試代碼進行驗證。徹底理解了這張圖,對JavaScript語言的了解也就差不多了。下面是一些補充說明:
1. 圖中有好幾個地方提到build-in Function constructor,這是同一個對象,可以測試驗證:
復(fù)制代碼 代碼如下:

//Passed in FF2.0, IE7, Opera9.25, Safari3.0.4
Function==Function.constructor //result: true
Function==Function.prototype.constructor //result: true
Function==Object.constructor //result: true
//Function also equals to Number.constructor, String.constructor, Array.constructor, RegExp.constructor, etc.
function fn(){}
Function==fn.constructor //result: true

這說明了幾個問題: Function指向系統(tǒng)內(nèi)置的函數(shù)構(gòu)造器(build-in Function constructor);Function具有自舉性;系統(tǒng)中所有函數(shù)都是由Function構(gòu)造。

2. 左下角的obj1, obj2...objn范指用類似這樣的代碼創(chuàng)建的對象: function fn1(){}; var obj1=new fn1();這些對象沒有本地constructor方法,但它們將從Prototype鏈上得到一個繼承的constructor方法,即fn.prototype.constructor,從函數(shù)對象的構(gòu)造過程可以知道,它就是fn本身了。


3.右下角的obj1, obj2...objn范指用類似這樣的代碼創(chuàng)建的對象: var obj1=new Object();或var obj1={};或var obj1=new Number(123);或obj1=/\w+/;等等。所以這些對象Prototype鏈的指向、從Prototype鏈繼承而來的 constructor的值(指它們的constructor是build-in Number constructor還是build-in Object constructor等)等依賴于具體的對象類型。另外注意的是,var obj=new Object(123);這樣創(chuàng)建的對象,它的類型仍然是Number,即同樣需要根據(jù)參數(shù)值的類型來確定。同樣它們也沒有本地constructor,而是從Prototype鏈上獲得繼承的constructor方法,即build-in *** constructor,具體是哪一個由數(shù)據(jù)類型確定。
示例代碼

復(fù)制代碼 代碼如下:

//自定義對象代表,對應(yīng)Javascript Object Model中的use defined functions
function Foo(){}
//自定義對象創(chuàng)建的對象實例的代表,對應(yīng)Javascript Object Model中的objects that created by user defined functions
var foo = new Foo();
//String內(nèi)置函數(shù)代表
//str為內(nèi)置函數(shù)創(chuàng)建的對象實例的代表,對應(yīng)Javascript Object Model中的objects that created by build-in constructors
var str = new String("string");


內(nèi)存展現(xiàn)

你會發(fā)現(xiàn),它和《理解Javascript_09_Function與Object》中的內(nèi)存分析圖是一樣的,為什么呢?在《數(shù)據(jù)模型》中提到過,內(nèi)置對象都可以看作是函數(shù)的派生類型,例如Number instanceof Function為true,Number instanceof Object為true。在這個意義上,可以將它們跟用戶定義的函數(shù)等同看待。所以內(nèi)置對象和自定義對象的創(chuàng)建流程是一樣的。

在篇博文是在理解了《Function與Object》的基礎(chǔ)上寫的,因此要理解本文必須理解Function與Object的關(guān)系!

最后寫一點感言:令人發(fā)狂的理論!

相關(guān)文章

  • JS綁定事件的3種方法舉例示范(簡單易懂)

    JS綁定事件的3種方法舉例示范(簡單易懂)

    在JavaScript的學(xué)習(xí)中我們經(jīng)常會遇到JavaScript的事件機制,例如事件綁定、事件監(jiān)聽、事件委托(事件代理)等,這篇文章主要給大家介紹了關(guān)于JS綁定事件的3種方法,需要的朋友可以參考下
    2023-11-11
  • knockoutjs動態(tài)加載外部的file作為component中的template數(shù)據(jù)源的實現(xiàn)方法

    knockoutjs動態(tài)加載外部的file作為component中的template數(shù)據(jù)源的實現(xiàn)方法

    Knockoutjs 的Components 是一種自定義的組件,它以一種強大、簡介的方式將你自己的ui代碼組織成一種單獨的、可重用的模塊。接下來通過本文給大家介紹knockoutjs動態(tài)加載外部的file作為component中的template數(shù)據(jù)源的實現(xiàn)方法,一起看看吧
    2016-09-09
  • Javascript的原型和原型鏈你了解嗎

    Javascript的原型和原型鏈你了解嗎

    這篇文章主要為大家詳細介紹了Javascript的原型和原型鏈,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 使弱類型的語言JavaScript變強勢

    使弱類型的語言JavaScript變強勢

    Javascript (ECMA Script)是一種弱類型的語言.這并不意味著它沒有數(shù)據(jù)類型,只是變量或者Javascript對象屬性不需要一個特定類型的值分配給它或者它始終使用相同的值.Javascript中的變量同樣支持自由類型轉(zhuǎn)換成為適用(或者要求)的內(nèi)容以便于使用.
    2009-06-06
  • 微信小程序?qū)崿F(xiàn)用戶登錄模塊服務(wù)器搭建

    微信小程序?qū)崿F(xiàn)用戶登錄模塊服務(wù)器搭建

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)用戶登錄模塊服務(wù)器搭建,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 利用d3.js制作連線動畫圖與編輯器的方法實例

    利用d3.js制作連線動畫圖與編輯器的方法實例

    這篇文章主要給大家介紹了關(guān)于如何利用d3.js制作連線動畫圖與編輯器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用d3.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue(javaScript)操作字符串的一些常用方法總結(jié)

    vue(javaScript)操作字符串的一些常用方法總結(jié)

    在平時前端開發(fā)中,我們不難發(fā)現(xiàn)經(jīng)常會用到字符串操作,這篇文章主要給大家介紹了關(guān)于vue(javaScript)操作字符串的一些常用方法的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • CocosCreator通用框架設(shè)計之資源管理

    CocosCreator通用框架設(shè)計之資源管理

    這篇文章主要介紹了CocosCreator通用框架設(shè)計之資源管理,對性能優(yōu)化感興趣的同學(xué),一定要看一下
    2021-04-04
  • Js控制彈窗實現(xiàn)在任意分辨率下居中顯示

    Js控制彈窗實現(xiàn)在任意分辨率下居中顯示

    彈窗居中比較煩人的是怎么才能在任意分辨率下實現(xiàn)居中顯示,為了解決此問題,本文測試了一下案例在此與大家分享,有類似需求的朋友可以學(xué)習(xí)下
    2013-08-08
  • JS實現(xiàn)QQ圖片一閃一閃的效果小例子

    JS實現(xiàn)QQ圖片一閃一閃的效果小例子

    這篇文章介紹了JS實現(xiàn)QQ圖片一閃一閃的效果小例子,有需要的朋友可以參考一下
    2013-07-07

最新評論

泰来县| 原阳县| 鲜城| 兴义市| 湘潭县| 建水县| 岫岩| 拜泉县| 黑龙江省| 湖南省| 盐源县| 桂平市| 四会市| 崇阳县| 洛宁县| 修水县| 抚松县| 锦州市| 伊通| 纳雍县| 余江县| 四子王旗| 静安区| 景谷| 宁明县| 巴彦淖尔市| 赣榆县| 德化县| 富源县| 永嘉县| 鲁甸县| 辽中县| 仪陇县| 科技| 封丘县| 竹北市| 吉首市| 宣武区| 新安县| 古蔺县| 平罗县|