Vue中object.defineproperty

78 阅读1分钟

Vue中object.defineproperty

使用以下代码输入tata中的数值是不可以背枚举的

 什么是不被枚举,也就是不可以遍历

` Object.defineProperty(person,'age',{
            value:18
        })
`

如何进行查他它为啥可以进行遍历

方法1

`console.log(Object.keys(person))`

方法2

`console.log(person);
        for(let key in person){
            console.log('@',person[key]);
        }`

完整的代码:

<body>
    <script type="text/javascript">
        let person = {
            name: '张三',
            sex: '男'
        }
 
        Object.defineProperty(person, 'age', {
            value: 18
        })
        //console.log(Object.keys(person))查看代码是否进行遍历
        console.log(person);
        for(let key in person){
            console.log('@',person[key]);
        }
    </script>
</body>

注意:

如果在[vue]中直接在data的添加数据的话,在默认情况下是可以被,删除,修改,枚举的

解决方法是在标签中添加以下代码

            value: 18,
            enumerable:true,//控制属性是否可以枚举,默认值是false
            writable:true,//控制属性是否可以被修改,默认值是false
            configurable:true//控制属性是否可以被删除,默认值是false
        })