摘要:用于檢查傳入的對(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)建。
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) // TypeErrorSymbol.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"); // falseSymbol.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...in、for...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
摘要:定義什么是數(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ù)類型? ...
摘要:中的數(shù)據(jù)類型為什么稱為弱類型語言中變量是沒有類型的,只有值才有。有哪些數(shù)據(jù)類型在中,共有七種數(shù)據(jù)類型,其中,六種是基本原始類型,一種是對(duì)象復(fù)合引用類型。因此,我們可以寫一個(gè)函數(shù),用來精確檢測(cè)類型。 showImg(http://upload-images.jianshu.io/upload_images/7803415-2bbe6fd5fdeebe0d.jpg?imageMogr2/a...
摘要:的垃圾回收器,進(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ù)...
摘要:中有三種數(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),下層地基沒打好,上層就是豆腐渣工程,...
摘要:舉個(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ù)類型,就是將...
摘要:用于檢查傳入的對(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...
閱讀 1219·2019-08-30 15:55
閱讀 964·2019-08-30 15:55
閱讀 2167·2019-08-30 15:44
閱讀 2898·2019-08-29 14:17
閱讀 1143·2019-08-29 12:45
閱讀 3320·2019-08-26 10:48
閱讀 3146·2019-08-23 18:18
閱讀 2615·2019-08-23 16:47