14.4 Symbols ที่พบบ่อย

 14.4.1 Symbol.iterator และ Symbol.asyncIterator

TBC


14.4.2 Symbol.hasInstance

instanceof จะเรียกใช้ method นี้แทนการเช็คปกติถ้ามี method นี้อยู่

// Define an object as a "type" we can use with instanceof
let uint8 = {
    [Symbol.hasInstance](x) {
        return Number.isInteger(x) && x >= 0 && x <= 255;
    }
};
128 instanceof uint8     // => true
256 instanceof uint8     // => false: too big
Math.PI instanceof uint8 // => false: not an integer


14.4.3 Symbol.toStringTag

เมื่อใช้ Object.prototype.toString.call() กับชนิดข้อมูลที่มากับ Javascript จะได้ผลดังนี้

Object.prototype.toString.call([])     // => "[object Array]"
Object.prototype.toString.call(/./)    // => "[object RegExp]"
Object.prototype.toString.call(()=>{}) // => "[object Function]"
Object.prototype.toString.call("")     // => "[object String]"
Object.prototype.toString.call(0)      // => "[object Number]"
Object.prototype.toString.call(false)  // => "[object Boolean]"
Object.prototype.toString.call(new Map()) //=> '[object Map]'
Object.prototype.toString.call(new Set()) //=>'[object Set]'
Object.prototype.toString.call(new Date()) //=>'[object Date]'
Object.prototype.toString.call(null)//=>'[object Null]'
Object.prototype.toString.call(undefined)//=>'[object Undefined]'
Object.prototype.toString.call(Symbol())//=>'[object Symbol]'
Object.prototype.toString.call(/./)//=>'[object RegExp]'
Object.prototype.toString.call(10n**100n)//=>'[object BigInt]'

Object.prototype.toString.call({}) //=> '[object Object]'

หากต้องการให้ Object คืนค่าที่ต่างออกไปให้ใช้ toStringTag

class Range {
    get [Symbol.toStringTag]() { return "Range"; }
    // the rest of this class is omitted here
}
let r = new Range(1, 10);
Object.prototype.toString.call(r)   // => "[object Range]"

14.4.4 Symbol.species

TBC

14.4.5 Symbol.isConcatSpreadable

14.4.6 Pattern-Matching Symbols

14.4.7 Symbol.toPrimitive

14.4.8 Symbol.unscopables





















































Comments

Popular posts from this blog

15.8.4 การวาดลงบน cavas

15.8.3 Graphics Attributes

Class ใน JavaScript, การสร้าง class ด้วย keyword class