浅谈Object.defineProperty()

2019-03-22  本文已影响0人  夏日望天看云

-介绍

语法

Object.defineProperty(obj, prop, descriptor)

参数

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

修饰符descriptor

描述符可同时具有的键值

  configurable enumerable value writable get set
数据描述符 Yes Yes Yes Yes No No
存取描述符 Yes Yes No No Yes Yes

利用Object.defineProperty()完成一个简易的数据双向绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>双向绑定</title>
</head>
<body>
    <div id="box">
        <input type="text" name="name" id="name" >
        <div id="show">

        </div>
        <button id="click">点击</button>
    </div>
</body>
</html>
var data = {};
var name;
Object.defineProperty(data, "show", {
    configurable: true,
    enumerable: true,
    
    set: function (newvalue) { 
        name = newvalue;
    },
    get: function () { 
        return name;
    } 
})
document.querySelector("#name").addEventListener("input", function () { 
    // 改变name的值
    name = this.value;
    document.querySelector("#show").innerHTML = data.show;
})

document.querySelector("#click").addEventListener("click", function () { 
    // 改变data.show的值
    data.show = "我自己设置的";
    document.querySelector("#show").innerHTML = name;
    document.querySelector("#name").value = name;
})

效果图


效果.gif
上一篇 下一篇

猜你喜欢

热点阅读