|
@@ -0,0 +1,83 @@
|
|
|
|
+<!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>
|