除了定義自己使用的symbol值以外,es6還提供了11個內建的symbol值,指向語言內部使用的方法。
物件的symbol.hasinstance
屬性,指向乙個內部方法。當其他物件使用instanceof
運算子,判斷是否為該物件的例項時,會呼叫這個方法。比如,foo instanceof foo
在語言內部,實際呼叫的是foo[symbol.hasinstance](foo)
。
class myclass
}[1, 2, 3] instanceof new myclass() // true
上面**中,myclass
是乙個類,new myclass()
會返回乙個例項。該例項的symbol.hasinstance
方法,會在進行instanceof
運算時自動呼叫,判斷左側的運運算元是否為array
的例項。
let fibonacci = }}
}}for (var n of fibonacci)
ES6 symbol 以及symbol的簡單應用
1.es6 引入了一種新的原始資料型別symbol,表示獨一無二的值。2.symbol 值通過symbol函式生成。3.symbol 函式可以接受乙個字串作為引數,表示對 symbol 例項的描述,主要是為了在控制台顯示,或者轉為字串時,比較容易區分。4.es2019 提供了乙個例項屬性descri...
Symbol表的啟發
本文是 google.loader 欣賞 系列的一部分。這段 原本是非常好讀懂的,但是當所有的函式名和變數名都用小寫的a到z之間的乙個字母代替以後,就變得不好讀起來,尤其是這段令人抓狂的 function k c,a,b,d,e,f 不死一堆腦細胞是很難摸得到門路的。其實,這說明,這個 一定是經過編...
symbol 的前世今生
es5 的物件屬性名都是字串,這容易造成屬性名的衝突。比如,你使用了乙個他人提供的物件,但又想為這個物件新增新的方法 mixin 模式 新方法的名字就有可能與現有方法產生衝突。如果有一種機制,保證每個屬性的名字都是獨一無二的就好了,這樣就從根本上防止屬性名的衝突。這就是 es6 引入symbol的原...