使用object.defineProperties实现简单的双向绑定

html

<input type="text" id="inputs">
<span id="spans"></span>

script

<script>
    var values = {};
    let inputs = document.getElementById('inputs');
    let spans = document.getElementById("spans");
    var vales = {}
    Object.defineProperties(vales, {
        vales: {//半隐藏
            _vales: 25,//实际存储值
            writable: true,
            enumerable: false,//半隐藏
            configurable: false,
            extensible: false
        },
        vales: { //第一个保镖,帮助用户去属性中去取值
            get: function () {
                return this._vales
            }, //第二个保镖帮助,判断然后去存值
            set: function (vales) {
                //满足条件将新值送回属性中
                this._vales = vales;
                spans.innerHTML = vales;
            },
            enumerable: true,//代替受保护的属性,抛投露面
            configurable: false//不能删除保镖
        }
    });
    Object.preventExtensions(vales)
    Object.seal(vales)
    inputs.oninput = function () {
        var _this = this;
        vales.vales = _this.value
    }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值