[Symbol(‘es’)]不太能理解到
来源:3-14 代理Proxy(上)
 
			Panda_io
2020-11-09
问题(1)请问老师这里的代理方法为什么会被调用两次?第二次还传入了“length”
let arr1 = []
arr1 = new Proxy(arr1,{
    set(target,prop,val){
        console.log(target,prop,val)
        if(typeof val === 'number'){
            target[prop] = val
            return true
        }else {
            throw new Error('请传入number类型的数值')
        }
    }
})
arr1.push(4)
arr1.push(6)

问题(2)老师请问这里的Symbol为什么要加[ ],老师说Symbol是一种基本数据类型,加[]表明它是一个变量,我们要用变量的值来作为对象的key,我理解的基本数据类型 != 变量,这里就很懵逼。
//ownKeys
let obj3 = {
    name: 'imooc',
    [Symbol('es')]:'es'
}
console.log(Object.getOwnPropertyNames(obj))
写回答
	1回答
- 
				  谢成 2020-11-10 1、使用 push 方法给数组添加值的时候,length 属性会自动增加,所以也会拦截到length属性的变化 2、这是对象的属性名表达式的写法,这样拆开下应该更好理解: const s = Symbol('es'); const obj = { name: 'imooc', [s]: 'es' }; 012020-11-10
相似问题
