成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 數(shù)據(jù)類型(二)

SimpleTriangle / 3145人閱讀

摘要:用于檢查傳入的對(duì)象是否是當(dāng)前對(duì)象的原型。返回對(duì)象的字符串?dāng)?shù)值或布爾值表示。類型表示獨(dú)一無二的值。是一種基本數(shù)據(jù)類型。一個(gè)值能作為對(duì)象屬性的標(biāo)識(shí)符這是該數(shù)據(jù)類型僅有的目的。圍繞原始數(shù)據(jù)類型創(chuàng)建一個(gè)顯式包裝器對(duì)象從開始不再被支持。

Object 類型

ECMAScript中的對(duì)象就是一組數(shù)據(jù)和功能的集合。

創(chuàng)建對(duì)象
const o = new Object();
const o = new Object; // 有效,但不推薦省略圓括號(hào)
const o = {};
實(shí)例屬性和方法:

constructor: 構(gòu)造函數(shù)。

hasOwnProperty(propertyName): 檢查 propertyName (傳入的屬性)在當(dāng)前對(duì)象實(shí)例中(不是實(shí)例原型中)是否存在。

isPrototypeOf(object): 用于檢查傳入的對(duì)象是否是當(dāng)前對(duì)象的原型。

propertyIsEnumerable(propertyName): 檢查 propertyName (傳入的屬性)是否能夠使用 for-in 語句枚舉。

toLocaleString(): 返回對(duì)象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對(duì)應(yīng)。

toString(): 返回對(duì)象的字符串表示。

valueOf(): 返回對(duì)象的字符串、數(shù)值或布爾值表示。通常與toString()返回值相同。

const o = new Object();
console.log(o.toLocaleString()); // "[object Object]"
console.log(o.toString()); // "[object Object]"
console.log(o.valueOf()); // "{}"
Symbol 類型

表示獨(dú)一無二的值。是一種基本數(shù)據(jù)類型。每個(gè)從Symbol()返回的symbol值都是唯一的。一個(gè)symbol值能作為對(duì)象屬性的標(biāo)識(shí)符;這是該數(shù)據(jù)類型僅有的目的。它不支持語法:new Symbol()。
圍繞原始數(shù)據(jù)類型創(chuàng)建一個(gè)顯式包裝器對(duì)象從 ECMAScript 6 開始不再被支持。 然而,現(xiàn)有的原始包裝器對(duì)象,如 new Boolean、new String以及new Number因?yàn)檫z留原因仍可被創(chuàng)建。

創(chuàng)建 Symbol([description])

description: 可選的字符串。symbol的描述,可用于調(diào)試(控制臺(tái)顯示、轉(zhuǎn)為字符串等)但不能訪問symbol本身。
如果 Symbol 的參數(shù)是一個(gè)對(duì)象,就會(huì)調(diào)用該對(duì)象的toString方法,將其轉(zhuǎn)為字符串,然后才生成一個(gè) Symbol 值。

var sym1 = Symbol();
var sym2 = Symbol("foo");
var sym3 = Symbol("foo");

typeof sym1 // "symbol"

sym1 // Symbol()
sym2 // Symbol("foo")
sym3 // Symbol("foo")

sym1.toString() // "Symbol()"
sym2.toString() // "Symbol(foo)"
sym3.toString() // "Symbol(foo)"

sym2 === sym3 // false

var sym = new Symbol(); // TypeError

// 創(chuàng)建一個(gè)Symbol包裝器對(duì)象
var sym = Symbol("foo");
typeof sym;     // "symbol"
var symObj = Object(sym);
typeof symObj;  // "object"

// 運(yùn)算
`your symbol is ${sym}`
// TypeError: can"t convert symbol to string
Boolean(sym) // true
Number(sym) // TypeError
Symbol.for([description])

Symbol.for()與Symbol()這兩種寫法,都會(huì)生成新的 Symbol。它們的區(qū)別是,前者會(huì)被登記在全局環(huán)境中供搜索,后者不會(huì)。Symbol.for()不會(huì)每次調(diào)用就返回一個(gè)新的 Symbol 類型的值,而是會(huì)先檢查給定的key是否已經(jīng)存在,如果不存在才會(huì)新建一個(gè)值。

Symbol.for("bar") === Symbol.for("bar"); // true
Symbol.for() === Symbol.for(); // true

Symbol("bar") === Symbol("bar"); // false
Symbol.prototype.description

獲取Symbol 的描述。ES2019提供的一個(gè)實(shí)例屬性。

const sym = Symbol("foo");

sym.description // "foo"
Symbol.keyFor()

返回一個(gè)已登記的 Symbol 類型值的key。

Symbol.keyFor(); // TypeError

const sym1 = Symbol("a");
Symbol.keyFor(sym1); // undefined

const sym2 = Symbol.for("b");
Symbol.keyFor(sym2); // "b"
Object.getOwnPropertySymbols()

獲取指定對(duì)象的所有 Symbol 屬性名。因?yàn)镾ymbol 作為屬性名,該屬性不會(huì)出現(xiàn)在for...infor...of循環(huán)中,也不會(huì)被Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()返回。

const obj = {};
let a = Symbol("a");
let b = Symbol("b");

obj[a] = "Hello";
obj[b] = "World";

for (let i in obj) {
  console.log(i); // 無輸出
}

Object.getOwnPropertyNames(obj); // []

Object.getOwnPropertySymbols(obj); // [Symbol(a), Symbol(b)]
Reflect.ownKeys()

返回所有類型的鍵名,包括常規(guī)鍵名和 Symbol 鍵名。

const obj = {
  [Symbol("a")]: 1,
  name: "Ashin",
  age: 3
};

Reflect.ownKeys(obj); // ["name", "age", Symbol(a)]
內(nèi)置的 Symbol 值

...

參考

《JavaScript高級(jí)程序設(shè)計(jì)》(第三版)
ECMAScript 6 入門 - 阮一峰

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105014.html

相關(guān)文章

  • 數(shù)據(jù)類型

    摘要:定義什么是數(shù)據(jù)類型數(shù)據(jù)類型,就是將數(shù)據(jù)按照某一規(guī)則進(jìn)行區(qū)別時(shí)所定義的分類標(biāo)簽。中的數(shù)據(jù)類型為什么稱為弱類型語言中變量是沒有類型的,只有值才有。有哪些數(shù)據(jù)類型在中,共有七種數(shù)據(jù)類型,其中,六種是基本原始類型,一種是對(duì)象復(fù)合引用類型。 showImg(https://segmentfault.com/img/remote/1460000017215604); 定義 1. 什么是數(shù)據(jù)類型? ...

    Tecode 評(píng)論0 收藏0
  • 、數(shù)據(jù)類型

    摘要:中的數(shù)據(jù)類型為什么稱為弱類型語言中變量是沒有類型的,只有值才有。有哪些數(shù)據(jù)類型在中,共有七種數(shù)據(jù)類型,其中,六種是基本原始類型,一種是對(duì)象復(fù)合引用類型。因此,我們可以寫一個(gè)函數(shù),用來精確檢測(cè)類型。 showImg(http://upload-images.jianshu.io/upload_images/7803415-2bbe6fd5fdeebe0d.jpg?imageMogr2/a...

    CarlBenjamin 評(píng)論0 收藏0
  • 進(jìn)擊的 JavaScript) 之 數(shù)據(jù)結(jié)構(gòu)

    摘要:的垃圾回收器,進(jìn)行回收。它們的數(shù)據(jù)就存放在堆內(nèi)存中,大小不一定,動(dòng)態(tài)分配內(nèi)存,可隨時(shí)修改。引用類型的變量存的是其在堆內(nèi)存中的地址,值的讀取,就是讀取這個(gè)內(nèi)存地址中儲(chǔ)存的內(nèi)容。 這東西還是很重要的,你要是搞懂了,就會(huì)去除很多困惑,比如不知道大家在學(xué)習(xí)js 的時(shí)候,有沒有對(duì) 基礎(chǔ)類型 和 引用類型 感到困惑過,兩者之間 表現(xiàn)的不同之處。 js 不同其他編程語言,它是腳本語言。所以,它的數(shù)...

    BlackFlagBin 評(píng)論0 收藏0
  • 前端進(jìn)擊的巨人():棧、堆、隊(duì)列、內(nèi)存空間

    摘要:中有三種數(shù)據(jù)結(jié)構(gòu)棧堆隊(duì)列。前端進(jìn)擊的巨人一執(zhí)行上下文與執(zhí)行棧,變量對(duì)象中解釋執(zhí)行棧時(shí),舉了一個(gè)乒乓球盒子的例子,來演示棧的存取方式,這里再舉個(gè)栗子搭積木。對(duì)于基本類型,棧中存儲(chǔ)的就是它自身的值,所以新內(nèi)存空間存儲(chǔ)的也是一個(gè)值。 面試經(jīng)常遇到的深淺拷貝,事件輪詢,函數(shù)調(diào)用棧,閉包等容易出錯(cuò)的題目,究其原因,都是跟JavaScript基礎(chǔ)知識(shí)不牢固有關(guān),下層地基沒打好,上層就是豆腐渣工程,...

    edgardeng 評(píng)論0 收藏0
  • 33 個(gè) js 核心概念():數(shù)據(jù)類型

    摘要:舉個(gè)例子在上面的例子可以看到,我們聲明是一個(gè)數(shù)字,但是我們?cè)谥髮⒌闹涤指某闪俗址筒紶栔岛竺鏁?huì)講這些類型?;绢愋妥址硎疽粋€(gè)字符串,如。因此,我們可以寫一個(gè)函數(shù),用來精確檢測(cè)類型。 showImg(https://segmentfault.com/img/remote/1460000017309509?w=850&h=572); 定義 1. 什么是數(shù)據(jù)類型? 數(shù)據(jù)類型,就是將...

    QiShare 評(píng)論0 收藏0
  • JavaScript 數(shù)據(jù)類型

    摘要:用于檢查傳入的對(duì)象是否是當(dāng)前對(duì)象的原型。返回對(duì)象的字符串?dāng)?shù)值或布爾值表示。類型表示獨(dú)一無二的值。是一種基本數(shù)據(jù)類型。一個(gè)值能作為對(duì)象屬性的標(biāo)識(shí)符這是該數(shù)據(jù)類型僅有的目的。圍繞原始數(shù)據(jù)類型創(chuàng)建一個(gè)顯式包裝器對(duì)象從開始不再被支持。 Object 類型 ECMAScript中的對(duì)象就是一組數(shù)據(jù)和功能的集合。 創(chuàng)建對(duì)象 const o = new Object(); const o = new...

    maxmin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

SimpleTriangle

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<