日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript的数据访问总结

發布時間:2025/6/17 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript的数据访问总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據存儲共有4中方式:直接量、變量、數組項、對象成員。

訪問直接量和局部變量的時間快,訪問數組元素和對象成員相對較慢。局部變量存在于作用域鏈的起始位置,因此訪問局部變量比訪問跨作用域變量更快。全局變量總處于作用鏈的最末端,因此訪問速度也是最慢的。

通常把常用的對象成員、數組元素、跨域變量保存到局部變量中來改善JavaScript的性能。

1. js四種基本的數據存儲位置:

? ?1) 直接量: 只代表本身,不存儲在特定位置(字符串, 數字, 布爾值, 對象, 數組, 函數, 正則表達式, null, undifined)

? ?2) 變量: 用關鍵字var定義的數據存儲單元, 函數內部聲明的時候一定要用var, 否則是全局變量

? ?3) 數組元素: 存儲在js數組對象內部, 以數字作為索引.

? ?4) 對象成員:?存儲在js數組對象內部, 以字符串作為索引.

? ?性能方面取決于瀏覽器分別對這四種數據存儲位置進行200000次操作所用的時間. 直接量和局部變量的訪問速度快于數組項和對象成員的訪問速度。

2. 管理作用域(比如確定那些變量可以被函數訪問, 確定this的賦值)

? ?1) 作用域鏈和標識符解析

? ? ? ?內部屬性[Scope]:包含了一個函數被創建的作用域中對象的集合. 這個集合被稱為函數的作用域鏈,決定了那些數據能被函數訪問.

? ? ? ?執行函數時會創建一個成為'運行上下文'的內部對象, 每個運行期上下文都有自己的作用域鏈,用于標識符解析.

? ?2) 標識符解析的性能

? ? ? ?一個標識符所在的位置越深,它的讀寫速度就越慢.函數中讀寫局部變量是最快的,讀寫全局變量(總是處于運行期上下文作用域鏈的最末端)是最慢的(Chrome和Safari 4 不會出現這種問題).

? ? ? ?跨作用域的值(如document)在函數中被引用一次以上, ?那么就把它存儲到局部變量里.

? ?3) 改變作用域鏈

? ? ? ?with語句用來給對象的所有屬性創建一個變量. (實際功能用來避免書寫重復代碼),但是訪問布局變量變慢了。(避免使用)

? ? ? ?try-catch,在catch代碼塊內部,函數所有局部變量將會放在第二個作用域鏈對象中.但他不是用來解決js錯誤的。(小心使用)

? ?4) 動態作用域(只有確實有必要時再用)

? ? ? ?with

? ? ? ?try-catch

? ? ? ?eval()函數,可計算某個字符串,并執行其中的的 JavaScript 代碼。

? ?5) 閉包, 作用域和內存

? ? ? ?閉包: 允許函數訪問布局作用域之外的數據.?能夠讀取其他函數內部變量的函數,?由于在Javascript語言中, 只有函數內部的子函數才能讀取局部變量, 因此可以把閉包簡單理解成“定義在一個函數內部的函數”。

? ? ? ?閉包作用:?一個是前面提到的可以讀取函數內部的變量,另一個就是讓這些變量的值始終保持在內存中。

3. 對象成員

? ?DOM: 文檔對象模型

? ?BOM: 瀏覽器對象模型

? ?對象成員包含屬性和方法,包含任何數據類型,既可以說他是函數也可以是一種對象。

? ?一個命名的成員引用了一個函數,該成員就被成為一個' 方法 '。一個非函數類型的成員被稱為' 屬性 '。

? ?對象類型:實例成員(存在于對象實例中)和原型成員(由對象原型繼承而來)。

? 1) 原型

? ? ? 對象通過一個內部屬性綁定到它的原型。內部屬性 _proto_ 與屬性中的function并存,屬性中hasOwnProperty()=> 判斷對象是否包含特定的實例成員;in操作=>確定對象是否包含特定的屬性(實例和原型)

? 2) 原型鏈

? ? ? 構造器Book用來創建了一個新的Book實例book1。book1的原型(_proto_)是Book.prototype,Book.prototype的原型是Object.這個過程創建了一個原型鏈,book1和book2繼承了它們的成員。

? ? ??

? 3) 嵌套成員

  嵌套越深,訪問越慢,影響性能,盡量少用。

? 4) 緩存對象成員值(不適用于對象)

  使用一次以上,將值存儲到局部變量使用,局部變量訪問速度快。  

?

轉載于:https://www.cnblogs.com/floraCnblogs/p/js-data-access.html

總結

以上是生活随笔為你收集整理的JavaScript的数据访问总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。