第十二章 TypeScript Symbol类型

1.Symbol类型

let a1:symbol = Symbol(1) // 唯一的
let a2:symbol = Symbol(1) // 唯一的

// for Symbol for全局symbol有没有注册过这个key,如果有直接拿来用,如果没有的话他就会创建一个
// console.log(Symbol.for('heming')===Symbol.for('heming'))

let obj ={
    name:1,
    [a1]:111,
    [a2]:222
}
// console.log(obj)

// for in 不能读到symbol
// for(let key in obj){
//     console.log(key)
// }
// 不能读到symbol
// console.log(Object.keys(obj))
// 不能读到symbol
// console.log(Object.getOwnPropertyNames(obj))

//可以读到但是其他属性丢失
// console.log(Object.getOwnPropertySymbols(obj))
// 可以取到
// console.log(Reflect.ownKeys(obj))

2.生成器

//3.迭代器
// 4.set map

// let set:Set<number> = new Set([1,2,3,3,2,6]) // 天然去重的
// console.log(set,'set')

let map:Map<any,any> = new Map()

let Arr2 = [1,2,3]
map.set(Arr2,'鹤鸣')
// console.log(map.get(Arr2))

function args(){
    console.log(arguments,'args') // 伪数组
}

// let list = document.querySelectorAll('div') // 伪数组

// const each= (value:any)=>{
//     let It:any = value[Symbol.iterator]()
//     let next:any = {done:false}
//     while (!next.done){
//         next = It.next()
//         if(!next.done){
//             console.log(next.value)
//         }
//     }
// }
//
// each(map)
// for(let value of map){
//     console.log(value,'value')
// }

// 5.迭代器的语法糖 for of
// 6.for of 对象不能使用,因为没有 iterator
// 7.解构 底层原理也是去调用 iterator
// 8.对象支持for of
// let [a,b,c] = [4,5,6]
// let a = [4,5,6]
// let copy = [...a]
// console.log(a)


let obj = {
    max:5,
    current:0,
    [Symbol.iterator](){
        return {
            max:this.max,
            current: this.current,
            next(){
               if(this.current == this.max){
                   return {
                       value:undefined,
                       done:true
                   }
               }else{
                 return {
                     value:this.current++,
                     done:false
                 }
               }
            }
        }
    }
}

// for(let value of obj){
//     console.log(value)
// }

// let x = [...obj]
let x = {...obj}
console.log(x)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值