Symbol.toStringTag

該符號作為一個屬性表示“一個字串,該字串用於建立物件的預設字串描述。”由內建方法Object.prototype.toString()使用。

通過toString()方法獲取物件標識時,會檢索由Symbol.toStringTag指定的例項識別符號,預設為“Obejct”

Symbol.unscopables

根據ECMAScript規範,這個符號作為一個屬性表示“一個物件,該物件所有的以及繼承的屬性,都會從關聯的with環境繫結中排除”。

注意:不推薦使用with,因此也不推薦使用Symbol.unscopables

Object型別

ECMAScript中的物件其實就是一組資料和功能的集合。物件通過new操作符後跟物件型別的名稱來建立。開發者可以通過建立Object型別的例項來建立自己的物件,然後再給物件新增屬性和方法:

let o = new Object();

ECMAScript只要求給建構函式提供引數時使用括號。如果沒有引數,那麼完全可以省略(不推薦):

let o = new Object;

每個Object例項都有如下屬性和方法

  1. constructor:用於建立當前物件的函式。在前面的例子中,這個屬性的值就是Object()函式。
  2. hasOwnProperty(propertyName):用於判斷當前物件例項(不是原型)上是否存在給定的屬性。要檢查的屬性名必須是字串(如:o.hasOwnProperty("name"))
  3. isPrototypeof(boject):用於判斷當前物件是否為另一個物件的原型。
  4. propertyIsEnumerable(propertyName):用於判斷給定的屬性是否可以使用。與hasOwnProperty()一樣,屬性名必須是字串。
  5. toLocaleString():返回物件的字串表示,該字串反應物件所在的本地化執行環境。
  6. toString():返回物件的字串表示。
  7. valueOf():返回物件對應的字串、數值或布林值表示。通常與toString()的返回值相同。

    因為在ECMAScript中Object是所有物件的基類,所以任何物件都有這些屬性和方法。

注:參考書籍《JavaScript高階程式設計第四版》