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

JS?ES5創(chuàng)建常量詳解

 更新時間:2022年07月01日 08:47:06   作者:德育處主任?  
這篇文章主要介紹了JS?ES5創(chuàng)建常量詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下

前言

ES6 剛推出的時候,letconst應(yīng)該是大多數(shù)人學(xué)習(xí)ES6的第一個知識點。

其中const可以用來定義 常量 ,將不需要改變的數(shù)據(jù)定義成一個常量。

但其實在ES6之前我們也是有辦法定義常量的。

ES 5 創(chuàng)建常量

Object.defineProperty 的基礎(chǔ)用法

ES6之前是沒有const的,如果需要定義常量,可以使用Object.defineProperty

很多人知道Vue2使用 Object.defineProperty監(jiān)聽數(shù)據(jù)變化,但不一定知道 Object.defineProperty也可以用來定義常量。

Object.defineProperty方法會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性,并返回此對象。Object.defineProperty(obj, prop, descriptor)接收3個參數(shù)

  • obj: 要定義屬性的對象。
  • prop: 要定義或修改的屬性的名稱或 Symbol 。
  • descriptor: 要定義或修改的屬性描述符。

舉個例子:

var LH = {}
Object.defineProperty(LH, 'name', {
  value: '雷猴'
})
console.log(LH) // 輸出: {name: '雷猴'}
LH.name = '鯊魚辣椒'
console.log(LH)  // 輸出: {name: '雷猴'}

可以將上面的代碼放到你的瀏覽器里試試。

為什么修改LH.name無效呢?因為descriptor除了value之外,還有其他屬性,比如writable就可以用來定義該對象是否允許被修改,默認(rèn)是false,也就是不能修改。

所以 LH.name = '鯊魚辣椒'修改無效。

如果將writable改成true就可以修改了

var LH = {}
Object.defineProperty(LH, 'name', {
  value: '雷猴',
  writable: true // 允許修改
})
console.log(LH) // 輸出: {name: '雷猴'}
LH.name = '鯊魚辣椒'
console.log(LH)  // 輸出: {name: '鯊魚辣椒'}

創(chuàng)建常量

順著上面的思路,如果我們把LH改成window,那是不是就可以在window上定義一個屬性,而且該屬性是全局的,定義后在什么地方都能調(diào)用。

Object.defineProperty(window, 'NAME', {
  value: '雷猴'
})
console.log(NAME) // 輸出: 雷猴
NAME = '鯊魚辣椒'
console.log(NAME) // 輸出: 雷猴
window.NAME = '蟑螂惡霸'
console.log(NAME) // 輸出: 雷猴

不管如何修改,NAME 都是最開始定義的值。

常量居然可以修改值?

上面創(chuàng)建的常量,value是一個基礎(chǔ)數(shù)據(jù)類型的值。如果換成引用類型的值,那內(nèi)容是可以修改的。

Object.defineProperty(window, 'NAME', {
  value: {
    nickname: '雷猴'
  }
})
console.log(NAME)
NAME.nickname = '鯊魚辣椒'
console.log(NAME)

原因是,常量鎖定的是定義時所指向的內(nèi)存地址。

定義基礎(chǔ)數(shù)據(jù)類型時,內(nèi)存地址直接指向那個值。但定義引用類型時,內(nèi)存地址存的是引用地址。所以常量的定義指的是引用地址不能修改。

兼容性

使用 Object.defineProperty 定義常量時需要注意兼容性

到此這篇關(guān)于JS ES5創(chuàng)建常量詳解的文章就介紹到這了,更多相關(guān)JS ES5創(chuàng)建常量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javascript實現(xiàn)簡易計算器功能

    javascript實現(xiàn)簡易計算器功能

    這篇文章主要為大家詳細(xì)介紹了javascript實現(xiàn)簡易計算器功能,實現(xiàn)四則運算,小數(shù)點,回退,歸0等功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 關(guān)于VSCode格式化JS自動添加或去掉分號的問題

    關(guān)于VSCode格式化JS自動添加或去掉分號的問題

    這篇文章主要介紹了VSCode格式化JS自動添加或去掉分號的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • JS實現(xiàn)title標(biāo)題欄文字不間斷滾動顯示效果

    JS實現(xiàn)title標(biāo)題欄文字不間斷滾動顯示效果

    這篇文章主要介紹了JS實現(xiàn)title標(biāo)題欄文字不間斷滾動顯示效果,通過javascript時間函數(shù)定時操作動態(tài)修改頁面元素實現(xiàn)滾動效果,需要的朋友可以參考下
    2016-09-09
  • 微信小程序中使用vant框架的具體步驟

    微信小程序中使用vant框架的具體步驟

    本文主要介紹了微信小程序中使用vant框架的具體步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 淺析上傳頭像示例及其注意事項

    淺析上傳頭像示例及其注意事項

    本文主要分享一個簡易的上傳頭像示例以及其大致流程、實現(xiàn)過程中需要注意的事項。具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • JavaScript父子窗體間的調(diào)用方法

    JavaScript父子窗體間的調(diào)用方法

    這篇文章主要介紹了JavaScript父子窗體間的調(diào)用方法,涉及javascript調(diào)用窗體的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • JS原生帶縮略圖的圖片切換效果

    JS原生帶縮略圖的圖片切換效果

    這篇文章主要介紹了JS原生帶縮略圖的圖片切換效果,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-10-10
  • JS 數(shù)字轉(zhuǎn)換研究總結(jié)

    JS 數(shù)字轉(zhuǎn)換研究總結(jié)

    這篇文章主要介紹了JS 數(shù)字轉(zhuǎn)換實現(xiàn)方法,需要的朋友可以參考下
    2013-12-12
  • 理解JavaScript中的對象 推薦

    理解JavaScript中的對象 推薦

    JavaScript有一種object數(shù)據(jù)類型,但是這種對象不同于c#或vb中的對象,在c#中,我們通過類創(chuàng)建一個對象,一個類相當(dāng)于創(chuàng)建對象的模板,定義了對象的屬性和方法,這些對象和方法將永遠(yuǎn)固定,我們不能在運行時不能增加對象的屬性和方法。
    2011-01-01
  • ES5 模擬 ES6 的 Symbol 實現(xiàn)私有成員功能示例

    ES5 模擬 ES6 的 Symbol 實現(xiàn)私有成員功能示例

    這篇文章主要介紹了ES5 模擬 ES6 的 Symbol 實現(xiàn)私有成員功能,結(jié)合實例形式分析了ES5 模擬 ES6 的 Symbol 實現(xiàn)私有成員功能相關(guān)原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2020-05-05

最新評論

托克逊县| 盐池县| 梧州市| 鹤峰县| 西乌珠穆沁旗| 绥宁县| 榆树市| 罗源县| 读书| 临桂县| 双鸭山市| 波密县| 重庆市| 福鼎市| 米脂县| 乐安县| 宜兰市| 东宁县| 隆昌县| 瓦房店市| 苍南县| 乌鲁木齐县| 禄丰县| 文安县| 天台县| 博罗县| 江安县| 巧家县| 海晏县| 图木舒克市| 新安县| 若尔盖县| 格尔木市| 寻甸| 合作市| 汉中市| 乐昌市| 德庆县| 孝感市| 昭平县| 太仓市|