美文网首页
defineProperty

defineProperty

作者: Sccong | 来源:发表于2017-02-18 01:37 被阅读0次
    最近去面试,有问到vue底层的数据绑定的实现原理,没答出来,刚刚看明白,这里讲讲。

    defineProperty有一下几个属性

    • configuragble

      • 为true时才能改变它的值,默认 false,会有以下两个影响

    1.无法delete 删除对象的属性。
    var b={};Object.defineProperty(b,'name',{value:'scc'})
    ->Object {name: "scc"}
    delete b.name
    ->false

    2.无法通过在此defineProperty的方式设置。
    var b={};Object.defineProperty(b,'name',{value:'scc'})
    ->Object {name: "scc"}
    Object.defineProperty(b,'name',{value:'sccsss'})
    ->Uncaught TypeError: Cannot redefine property: name(…)
    ```

    • enumerable

      • 为true时才能出现在对象可以枚举属性中(Object.keys()),默认 false
    • value

      • 该属性对应的值,可以使任何有效的 JavaScript 值(数值,对象,函数等)。默认 undefined。
    • writable

    • 为true时才能通过a.b=xx的形式去修改值,默认fasle

    • get (不能和value+writable共存)

    • 查询对象的属性时会触发,比如a.b,则会触发这个函数,默认undefined。

    • set (不能和value+writable共存)

    • 设置对象的属性时会触发,比如a.b=x,则会触发这个函数,默认undefined。

    example

    明天用这个属性试试双向绑定,今天太晚了,睡了

    相关文章

      网友评论

          本文标题:defineProperty

          本文链接:https://www.haomeiwen.com/subject/ezkrwttx.html