摘要:用于檢查傳入的對象是否是當前對象的原型。返回對象的字符串數值或布爾值表示。類型表示獨一無二的值。是一種基本數據類型。一個值能作為對象屬性的標識符這是該數據類型僅有的目的。圍繞原始數據類型創建一個顯式包裝器對象從開始不再被支持。
Object 類型
ECMAScript中的對象就是一組數據和功能的集合。
創建對象const o = new Object(); const o = new Object; // 有效,但不推薦省略圓括號 const o = {};實例屬性和方法:
constructor: 構造函數。
hasOwnProperty(propertyName): 檢查 propertyName (傳入的屬性)在當前對象實例中(不是實例原型中)是否存在。
isPrototypeOf(object): 用于檢查傳入的對象是否是當前對象的原型。
propertyIsEnumerable(propertyName): 檢查 propertyName (傳入的屬性)是否能夠使用 for-in 語句枚舉。
toLocaleString(): 返回對象的字符串表示,該字符串與執行環境的地區對應。
toString(): 返回對象的字符串表示。
valueOf(): 返回對象的字符串、數值或布爾值表示。通常與toString()返回值相同。
const o = new Object(); console.log(o.toLocaleString()); // "[object Object]" console.log(o.toString()); // "[object Object]" console.log(o.valueOf()); // "{}"Symbol 類型
表示獨一無二的值。是一種基本數據類型。每個從Symbol()返回的symbol值都是唯一的。一個symbol值能作為對象屬性的標識符;這是該數據類型僅有的目的。它不支持語法:new Symbol()。
圍繞原始數據類型創建一個顯式包裝器對象從 ECMAScript 6 開始不再被支持。 然而,現有的原始包裝器對象,如 new Boolean、new String以及new Number因為遺留原因仍可被創建。
description: 可選的字符串。symbol的描述,可用于調試(控制臺顯示、轉為字符串等)但不能訪問symbol本身。
如果 Symbol 的參數是一個對象,就會調用該對象的toString方法,將其轉為字符串,然后才生成一個 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 // 創建一個Symbol包裝器對象 var sym = Symbol("foo"); typeof sym; // "symbol" var symObj = Object(sym); typeof symObj; // "object" // 運算 `your symbol is ${sym}` // TypeError: can"t convert symbol to string Boolean(sym) // true Number(sym) // TypeErrorSymbol.for([description])
Symbol.for()與Symbol()這兩種寫法,都會生成新的 Symbol。它們的區別是,前者會被登記在全局環境中供搜索,后者不會。Symbol.for()不會每次調用就返回一個新的 Symbol 類型的值,而是會先檢查給定的key是否已經存在,如果不存在才會新建一個值。
Symbol.for("bar") === Symbol.for("bar"); // true Symbol.for() === Symbol.for(); // true Symbol("bar") === Symbol("bar"); // falseSymbol.prototype.description
獲取Symbol 的描述。ES2019提供的一個實例屬性。
const sym = Symbol("foo"); sym.description // "foo"Symbol.keyFor()
返回一個已登記的 Symbol 類型值的key。
Symbol.keyFor(); // TypeError const sym1 = Symbol("a"); Symbol.keyFor(sym1); // undefined const sym2 = Symbol.for("b"); Symbol.keyFor(sym2); // "b"Object.getOwnPropertySymbols()
獲取指定對象的所有 Symbol 屬性名。因為Symbol 作為屬性名,該屬性不會出現在for...in、for...of循環中,也不會被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()
返回所有類型的鍵名,包括常規鍵名和 Symbol 鍵名。
const obj = { [Symbol("a")]: 1, name: "Ashin", age: 3 }; Reflect.ownKeys(obj); // ["name", "age", Symbol(a)]內置的 Symbol 值
...
參考《JavaScript高級程序設計》(第三版)
ECMAScript 6 入門 - 阮一峰
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105014.html
摘要:中的數據類型為什么稱為弱類型語言中變量是沒有類型的,只有值才有。有哪些數據類型在中,共有七種數據類型,其中,六種是基本原始類型,一種是對象復合引用類型。因此,我們可以寫一個函數,用來精確檢測類型。 showImg(http://upload-images.jianshu.io/upload_images/7803415-2bbe6fd5fdeebe0d.jpg?imageMogr2/a...
摘要:的垃圾回收器,進行回收。它們的數據就存放在堆內存中,大小不一定,動態分配內存,可隨時修改。引用類型的變量存的是其在堆內存中的地址,值的讀取,就是讀取這個內存地址中儲存的內容。 這東西還是很重要的,你要是搞懂了,就會去除很多困惑,比如不知道大家在學習js 的時候,有沒有對 基礎類型 和 引用類型 感到困惑過,兩者之間 表現的不同之處。 js 不同其他編程語言,它是腳本語言。所以,它的數...
摘要:中有三種數據結構棧堆隊列。前端進擊的巨人一執行上下文與執行棧,變量對象中解釋執行棧時,舉了一個乒乓球盒子的例子,來演示棧的存取方式,這里再舉個栗子搭積木。對于基本類型,棧中存儲的就是它自身的值,所以新內存空間存儲的也是一個值。 面試經常遇到的深淺拷貝,事件輪詢,函數調用棧,閉包等容易出錯的題目,究其原因,都是跟JavaScript基礎知識不牢固有關,下層地基沒打好,上層就是豆腐渣工程,...
摘要:舉個例子在上面的例子可以看到,我們聲明是一個數字,但是我們在之后將的值又改成了字符串和布爾值后面會講這些類型。基本類型字符串表示一個字符串,如。因此,我們可以寫一個函數,用來精確檢測類型。 showImg(https://segmentfault.com/img/remote/1460000017309509?w=850&h=572); 定義 1. 什么是數據類型? 數據類型,就是將...
摘要:用于檢查傳入的對象是否是當前對象的原型。返回對象的字符串數值或布爾值表示。類型表示獨一無二的值。是一種基本數據類型。一個值能作為對象屬性的標識符這是該數據類型僅有的目的。圍繞原始數據類型創建一個顯式包裝器對象從開始不再被支持。 Object 類型 ECMAScript中的對象就是一組數據和功能的集合。 創建對象 const o = new Object(); const o = new...
閱讀 1207·2019-08-30 15:55
閱讀 954·2019-08-30 15:55
閱讀 2150·2019-08-30 15:44
閱讀 2879·2019-08-29 14:17
閱讀 1130·2019-08-29 12:45
閱讀 3301·2019-08-26 10:48
閱讀 3133·2019-08-23 18:18
閱讀 2599·2019-08-23 16:47