javascript - js用Object.defineProperty做双向数据绑定小问题
PHPz
PHPz 2017-04-11 10:16:36
[JavaScript讨论组]

我在网上看到的例子:






var input1 = document.querySelector("#text1");
var input2 = document.querySelector("#text2");
var data = {};
Object.defineProperty(data, "name", {
  configurable: true,
  get: function(){
      console.log(1111);
      return input1.value
  },
  set: function(newValue){
      console.log(222);
    input1.value = newValue;
    input2.value = newValue;
  }
})
data.name = "sss";
input1.onchange = function(){
  console.log(33333)
  data.name = data.name;
}
input2.onchange = function(){
  input1.value = this.value;
  console.log(data);
}

当我改变input2的值的时候。input1的value会发生变化,这是必然的。但是这时候我打印data。data值竟然也更新了。input2.onchange里 并没有调用data的set啊。input1.value发生改变,也并没有触发input1的onchange啊。那 data的数据的更新,到底是怎么触发的啊?

PHPz
PHPz

学习是最好的投资!

全部回复(2)
天蓬老师

楼主沫鸡冻;

当我改变input2的值的时候。input1的value会发生变化,这是必然的。

这个时候输出data.name;其实执行的是get方法,也就是输出input1的值。。。

PHP中文网

自己来实现双向绑定,还有博客

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号