Object.defineProperty()方法
Object.defineProperty()
方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
参数
- obj:要在其上定义属性的对象。
- prop:要定义或修改的属性的名称。
- descriptor:将被定义或修改的属性描述符。
返回值
- 被传递给函数的对象。
属性说明:
- 属性描述符
- 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>