1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>rest</title>
- </head>
- <body>
- <script>
- /**
- * 值唯一
- * 不能运算
- * 不能使用for in,可以使用reflect.ownkeys
- */
- //创建symbol
- let s = Symbol()
- console.log(s,typeof s) //Symbol() "symbol"
- let s1 = Symbol('chuck') //描述字符串
- let s2 = Symbol('chuck') //描述字符串
- console.log(s1) //Symbol(chuck)
- console.log(s1 === s2) //false
- let s3 = Symbol.for('chuck') //函数对象
- let s4 = Symbol.for('chuck')
- console.log(s3,typeof s3) //Symbol(chuck) "symbol"
- console.log(s3 === s4) // true
- //不能运算 否则报错
- //let result = s + 100;
- //数据类型
- //USONB you are so niubility
- /**
- * undefined
- * string
- * object
- * null
- * symbol
- */
-
- //symbol 使用场景
- //给对象添加方法 up down -- 可以很安全的加入方法
- let game = { }
- let methods = {
- up: Symbol(),
- down: Symbol()
- }
- game[methods.up] = function(){}
- game[methods.down] = function(){}
- //2
- let cc = {
- name : 'chuck',
- [Symbol('say')]:function(){}
- }
- // symbol 内置属性 共11个
- /**
- * hasInstance
- * match
- * replace
- * isConcatSpreadable
- */
- class Person{
- //自动执行
- static [Symbol.hasInstance](param){
- console.log(param) //{d:2}
- console.log('检测')
- }
- }
- let o = {d:2}
- console.log(o instanceof Person)
- const arr = [1,2,3]
- const arr1 = [4,5,6]
- arr1[Symbol.isConcatSpreadable] = false;//不可展开 合并
- console.log(arr.concat(arr1))
- </script>
- </body>
- </html>
|