js 了解Object.defineproperty并实现简易版vue的双向绑定

Object.defineproperty用于对对象添加或修改一个已有的属性(如果他是configurable)并对特性进行设置
举个栗子(该栗子仅仅是列举出Object.defineProperty所有属性):

var obj = {}
var demo = null;
Object.defineProperty(obj,"a",{
	value: 2, //值
	writable: true, //写入
	configurable: true, //配置
	enumerable:true, //枚举 是否可以循环
	get: function(){ //获取时方法
		return demo
	},
	set: function(value){ //赋值时方法
		demo = value
	}
})

具体参数的含义以及使用方法直接看看这个吧
MDN Object.defineProperty

这里使用该方法实现一个简易的vue双向绑定,实现原理是使用set进行数据的监听

代码如下:

	<input id="inputs" type="text" >
	<span id="sp"></span>
    <script>
		var inputs = document.getElementById("inputs"),
			span = document.getElementById("sp"),
			obj = {};
		Object.defineProperty(obj,"msg",{
			set: function(value){
				inputs.value = value
				span.innerHTML = value
			}
		})
		inputs.addEventListener('keyup',function(event){
			obj.msg = event.target.value
		})
    </script>

效果如下,输入框输入的时候,对应span的内容也会跟着变化
实现

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值