Object.defineProperty()方法

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

参数

  • obj:要在其上定义属性的对象。
  • prop:要定义或修改的属性的名称。
  • descriptor:将被定义或修改的属性描述符。

返回值

  • 被传递给函数的对象。

属性说明:

  1. 属性描述符
  • configurable:默认false,为true时可改变该prop属性描述符。
  • enumerable:默认为 false,为true时,此prop属性方可进行枚举。
  • writable:默认为 false,为true时,prop属性的value才能被赋值运算符修改。
  • value:默认为 undefined,该属性prop对应的值。
  • get: 默认为 undefined,当访问该prop属性时,会触发 get 的方法。
  • set:默认为 undefined,当修改prop属性值时,触发set方法。

代码:

<template>
    <div id="app">
        <input type="text" v-model='msg'>
        <div>
            <p>{{msg}}</p>
        </div>
    </div>
</template>

<script>
function VM(obj) {
    return obj;
}

var vm = new VM({
    el: '#app',
    data: {
        msg:'hello'
    }
})


Object.defineProperty(vm.data,'msg',{
    enumerable: true,
    configurable: true,
    set: function (newValue) {
        val = newValue;
        console.log('setter:' + newValue);
    },
    get: function () {
        console.log('getter:' +val);
        return val;
    }
})

vm.data.msg = "wwww"
var x = vm.data.msg;

</script>
 posted on 2019-07-10 16:36  猛练自然强  阅读(171)  评论(0)    收藏  举报