欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

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

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

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

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

原始值不能帶有屬性,盡管在給它進行屬性操作的時候不會報錯。示例:

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

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

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

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

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

值的復(fù)制

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

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

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

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

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

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

me.name = "Sam";

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

判斷值類型

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

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

result = variable instanceof constructor

instanceof 返回一個 Boolean 值。示例:

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

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

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

如果使用 instanceof 檢測原始值,則會始終返回 false,因為原始值不是對象。

總結(jié)

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

相關(guān)文章

  • 一文詳解JavaScript中this指向的問題

    一文詳解JavaScript中this指向的問題

    JavaScript中this指向的問題是面試中常常會問到的,所以本文就來通過一些簡單的示例為大家詳細講講,文中的示例代碼講解詳細,需要的可以參考一下
    2023-04-04
  • range 標準化之獲取

    range 標準化之獲取

    range 是用戶選擇區(qū)域的唯一表示方法,存在 w3c 的標準化 range ,以及 ie 特有的 textrange 與 controlrange ,相對于 ie ,w3c 的概念更易于理解,首先簡要介紹一下 w3c range.
    2011-08-08
  • bootstrap suggest搜索建議插件使用詳解

    bootstrap suggest搜索建議插件使用詳解

    這篇文章主要為大家詳細介紹了bootstrap suggest搜索建議插件的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 淺談js在html中的加載執(zhí)行順序,多個jquery ready執(zhí)行順序

    淺談js在html中的加載執(zhí)行順序,多個jquery ready執(zhí)行順序

    下面小編就為大家?guī)硪黄獪\談js在html中的加載執(zhí)行順序,多個jquery ready執(zhí)行順序。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • JavaScript中Async/Await通過同步的方式實現(xiàn)異步的方法介紹

    JavaScript中Async/Await通過同步的方式實現(xiàn)異步的方法介紹

    在JavaScript的異步編程中,我們經(jīng)常使用回調(diào)函數(shù)、Promise和 Async/Await來解決異步操作的問題,Async/Await 又是Promise的語法糖,它的出現(xiàn)讓異步編程變得更加直觀和易于理解,本文將詳細講解Async/Await如何通過同步的方式實現(xiàn)異步
    2023-06-06
  • Bootstrap面板使用方法

    Bootstrap面板使用方法

    面板樣式除了內(nèi)容之外,還有一個面板頭部可以添加標題,讓我們通過這篇文章看看Bootstrap面板樣式的使用方法
    2017-01-01
  • JS閉包、作用域鏈、垃圾回收、內(nèi)存泄露相關(guān)知識小結(jié)

    JS閉包、作用域鏈、垃圾回收、內(nèi)存泄露相關(guān)知識小結(jié)

    閉包是指有權(quán)訪問另一個函數(shù)作用域中變量的函數(shù)。接下來通過本文給大家介紹JS閉包作用域鏈等相關(guān)知識小結(jié)(垃圾回收內(nèi)存泄露)的相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • JavaScript使用Promise實現(xiàn)并發(fā)請求數(shù)限制

    JavaScript使用Promise實現(xiàn)并發(fā)請求數(shù)限制

    本文主要介紹了JavaScript使用Promise實現(xiàn)并發(fā)請求數(shù)限制,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 微信小程序開發(fā)中生命周期的詳細介紹

    微信小程序開發(fā)中生命周期的詳細介紹

    生命周期是指一個對象從創(chuàng)建→>運行>銷毀的整個階段,強調(diào)的是一個時間段,文中介紹了小程序中組件的生命周期,需要的朋友可以參考下
    2023-03-03
  • 一文帶你了解JavaScript中偽數(shù)組的使用

    一文帶你了解JavaScript中偽數(shù)組的使用

    所謂偽數(shù)組,指的是具有類似數(shù)組結(jié)構(gòu)的對象,但并非真正的數(shù)組,在本文中,我們將詳細介紹偽數(shù)組的特點和特征,并提供一些JavaScript代碼示例,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)起來吧
    2023-11-11

最新評論