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

關(guān)于ECMAScript中的原始值和引用值詳解

 更新時(shí)間:2021年08月04日 14:16:46   作者:木亦Sam  
在ECMAScript中,變量可以存在兩種類型的值,即原始值和引用,這篇這篇文章主要給大家介紹了關(guān)于ECMAScript中的原始值和引用值的相關(guān)資料,需要的朋友可以參考下

前言

這應(yīng)該是很基礎(chǔ)的 JavaScript 的知識(shí)點(diǎn),但估計(jì)很多小伙伴都只是簡(jiǎn)單帶過,到面試時(shí)一問三不知。這里結(jié)合我之前的筆記,再簡(jiǎn)單的介紹下原始值和引用值的相關(guān)知識(shí),來,開始。

ECMAScript 規(guī)定變量可以包含兩種數(shù)據(jù)類型,要么是原始值(primitive value),要么是引用值(reference value),原始值即為最簡(jiǎn)單的數(shù)據(jù)構(gòu)成,而引用值是指由多個(gè)值構(gòu)成的對(duì)象。

一共包含六種原始值,分別是:Undefined、Null、Boolean、Number、String和 Symbol,操作原始值就是操作存儲(chǔ)變量中的實(shí)際值。

而引用值這玩意呢,它是保存在內(nèi)存中的對(duì)象,由于 JavaScript 是不能直接訪問內(nèi)存位置的,因此也就不能直接操作對(duì)象所在的內(nèi)存空間,當(dāng)你操作對(duì)象的時(shí)候,實(shí)際也就是操作的對(duì)象的引用,而不是這個(gè)對(duì)象本身。

什么是動(dòng)態(tài)屬性

動(dòng)態(tài)屬性是指在創(chuàng)建一個(gè)引用值后,可以動(dòng)態(tài)地添加、修改、刪除其屬性和方法。示例:

let obj = new Object();
obj.name = "Sam";

console.log(obj.name); // "Sam"

釋義:首先創(chuàng)建一個(gè)引用值對(duì)象,并把它保存在變量 obj 中,第二步賦予 obj 一個(gè) name 屬性,值為“Sam”。除非這個(gè)屬性被修改/刪除,不然你是可以直接打印或者訪問這個(gè)屬性的。

原始值不能帶有屬性,盡管在給它進(jìn)行屬性操作的時(shí)候不會(huì)報(bào)錯(cuò)。示例:

let me = "Sam";
me.sex = "男";

console.log(me.sex); // undefined

這里使用的是字面量的形式初始化,因此盡管給 me 賦予了 sex 屬性,也是無濟(jì)于事的,無法訪問該屬性。
如果是使用 new 關(guān)鍵字初始化原始值,JavaScript 則會(huì)創(chuàng)建一個(gè) Object 實(shí)例。示例:

let me = new String("Sam");
me.sex = "男";

console.log(me.sex); // "男"

值的復(fù)制

原始值和引用值在通過變量復(fù)制時(shí)也有所不同,原始值會(huì)被復(fù)制到一個(gè)新的變量,而引用值實(shí)際上是復(fù)制了值的指針。示例:

let name = "Sam";
let myName = name;

console.log(myName); // "Sam"

當(dāng) myName 初始化為 name 時(shí),“Sam”也會(huì)被復(fù)制到 myName 中,與 name 相互獨(dú)立,互不干擾,可以理解為 myName 是 name 的副本。

而引用值的復(fù)制,實(shí)際是復(fù)制了一個(gè)指針,指向堆內(nèi)存中的對(duì)象,對(duì)復(fù)制后的變量進(jìn)行屬性操作,實(shí)際也是操作的被復(fù)制的對(duì)象,兩個(gè)變量實(shí)際上是指同一對(duì)象。示例:

let me = new Object();
let you = me;

me.name = "Sam";

console.log(you.name); // "Sam"

判斷值類型

我們經(jīng)常使用 typeof 來判斷一個(gè)變量的類型,對(duì)判斷原始值的類型很有用,但如果是用來判斷引用值,卻顯得用處不大,因?yàn)閷?duì)于引用值和 null,typeof 都是返回的 object。

通常情況下,我們需要確切知道,這是一個(gè)什么類型的對(duì)象,于是便有了 instanceof 操作符。語法為:

result = variable instanceof constructor

instanceof 返回一個(gè) Boolean 值。示例:

console.log(person instanceof Object);  
// 變量 person 是 Object 嗎?

console.log(colors instanceof Array);   
// 變量 colors 是 Array 嗎?

console.log(pattern instanceof RegExp); 
// 變量 pattern 是 RegExp 嗎?

如果使用 instanceof 檢測(cè)原始值,則會(huì)始終返回 false,因?yàn)樵贾挡皇菍?duì)象。

總結(jié)

到此這篇關(guān)于關(guān)于ECMAScript中的原始值和引用值的文章就介紹到這了,更多相關(guān)ECMAScript原始值和引用值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS計(jì)算斐波拉切代碼實(shí)例

    JS計(jì)算斐波拉切代碼實(shí)例

    這篇文章主要介紹了js計(jì)算斐波拉切,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 如何利用JavaScript實(shí)現(xiàn)排序算法淺析

    如何利用JavaScript實(shí)現(xiàn)排序算法淺析

    排序算法是筆試中經(jīng)常出現(xiàn)的,提起排序算法就一定要提下算法復(fù)雜度和大O表示法,算法復(fù)雜度是指算法在編寫成可執(zhí)行程序后,運(yùn)行時(shí)所需要的資源,資源包括時(shí)間資源和內(nèi)存資源,這篇文章主要給大家介紹了關(guān)于如何利用JavaScript實(shí)現(xiàn)排序算法的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • JS+CSS實(shí)現(xiàn)簡(jiǎn)易實(shí)用的滑動(dòng)門菜單效果

    JS+CSS實(shí)現(xiàn)簡(jiǎn)易實(shí)用的滑動(dòng)門菜單效果

    這篇文章主要介紹了JS+CSS實(shí)現(xiàn)簡(jiǎn)易實(shí)用的滑動(dòng)門菜單效果,涉及JavaScript鼠標(biāo)事件及頁面元素遍歷的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • 原生JS實(shí)現(xiàn)左右箭頭選擇日期實(shí)例代碼

    原生JS實(shí)現(xiàn)左右箭頭選擇日期實(shí)例代碼

    原生JS 左右箭頭選擇日期,就是用左右尖括號(hào)可改變中間日期的值,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2017-03-03
  • JavaScript Event學(xué)習(xí)第五章 高級(jí)事件注冊(cè)模型

    JavaScript Event學(xué)習(xí)第五章 高級(jí)事件注冊(cè)模型

    在這一章我會(huì)講解兩種高級(jí)時(shí)間注冊(cè)模型:W3C和微軟的。因?yàn)檫@兩個(gè)方法都不能跨瀏覽器,所以在現(xiàn)在看來他們的使用場(chǎng)合并不多。
    2010-02-02
  • 詳解設(shè)置Webstorm 利用babel將ES6自動(dòng)轉(zhuǎn)碼成ES5

    詳解設(shè)置Webstorm 利用babel將ES6自動(dòng)轉(zhuǎn)碼成ES5

    這篇文章主要介紹了詳解設(shè)置Webstorm 利用babel將ES6自動(dòng)轉(zhuǎn)碼成ES5,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • D3.js實(shí)現(xiàn)力向?qū)D的繪制教程詳解

    D3.js實(shí)現(xiàn)力向?qū)D的繪制教程詳解

    力向?qū)D是繪圖的一種算法,實(shí)現(xiàn)了用以模擬粒子物理運(yùn)動(dòng)的?velocity?Verlet?數(shù)值積分器。本文將利用D3.js實(shí)現(xiàn)力向?qū)D的繪制,需要的可以參考一下
    2022-11-11
  • 如何基于小程序?qū)崿F(xiàn)發(fā)送語音消息及轉(zhuǎn)文字功能

    如何基于小程序?qū)崿F(xiàn)發(fā)送語音消息及轉(zhuǎn)文字功能

    最近為小程序增加語音識(shí)別轉(zhuǎn)文字的功能,坑路不斷,特此記錄,下面這篇文章主要給大家介紹了關(guān)于如何基于小程序?qū)崿F(xiàn)發(fā)送語音消息及轉(zhuǎn)文字功能的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 使用ImageMagick進(jìn)行圖片縮放、合成與裁剪(js+python)

    使用ImageMagick進(jìn)行圖片縮放、合成與裁剪(js+python)

    由于需要在服務(wù)器端處理,使用就研究使用imagemagick來進(jìn)行。同時(shí)準(zhǔn)備封裝了一個(gè)Node.js和Python的方法,主要還是講一下然后使用imagemagick來對(duì)圖片進(jìn)行縮放、合成后進(jìn)行裁剪吧
    2013-09-09
  • js實(shí)現(xiàn)文字列表無縫滾動(dòng)效果

    js實(shí)現(xiàn)文字列表無縫滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)文字列表無縫滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論

黔东| 巴马| 翼城县| 镇远县| 铜陵市| 商洛市| 内乡县| 仙桃市| 沁水县| 怀集县| 遂宁市| 剑河县| 莱阳市| 信宜市| 甘孜县| 东兰县| 苗栗市| 峨山| 云南省| 平利县| 娱乐| 车险| 杭锦旗| 女性| 称多县| 元谋县| 辽中县| 成都市| 阿巴嘎旗| 周至县| 巴中市| 栾城县| 霍邱县| 土默特右旗| 东丰县| 山东省| 南皮县| 太谷县| 丹东市| 和龙市| 铜川市|