首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

原生js实现vue的数据双向绑定

写在前面 很多面试官在面试的时候为了显示自己很牛,喜欢问面试者,你会不会使用原生js实现vue的双向绑定啊,每次我遇到这种面试官我都想揍他一顿,不是说这个问题问得不好,我就想问问,我会或者不会影响我使用...如果真的是使用原生的话,需要这种功能吗?如果使用vue的话,需要知道吗?但是很多面试官还是会问,所以这里我还是给大家写一下,其实没有想象的那么的难!...简单的分析一波 所谓的双向绑定就是这边输入数据的时候,另一个dom节点可以时刻监听到这个数据的变化,并且做出相应的操作,最简单的操作就是输入什么就显示什么,这个是怎么实现的呢?

1.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

JS原生数据绑定原理

用过vue的人都知道,vue有一个特别好用的数据绑定,只要绑定了,你只要改变了这个数据,页面也会跟着渲染。其实原生JS也是可以做到的,vue其实就是用了原生的原理。...hello", configurable:false }); console.log(obj.val); //输出hello 现在说说最重要的getter和setter方法,数据绑定的主要方法...obj.hello = e.target.value; console.log(obj.hello) }; obj.hello = 999; 当我们监听input的键盘事件的时候...这时候估计很多人会觉得都是监听,那还不如直接写在input的监听事件里面,其实不是的,只要你调用了obj.hello,页面的值就会变化。...就像obj.hello = 999;那么页面的值就会是999;感兴趣的可以复制代码的方法,一个一个方法调用,就很容易明白原生JS的双向绑定

1.8K30

js绑定事件代理的坑

js通过事件代理的方式绑定跳转事件,我这里的逻辑是把click事件绑定在最外层container上面,如果e.target包含我已经写好的class,则执行跳转逻辑。...但是这种方式好像只能是在点击的元素的上面,也就是最内层的元素上面有相应的class才能跳转,在外层加同样的class不生效,说明是我对于事件代理的理解不够深刻,其实事件代理的作用就是为了把目标元素的事件绑定在外层做代理...,我想实现外层元素点击,固然不可生效。...(e) { console.log(e.currentTarget) //获得当前绑定监听事件的元素, container console.log(e.target)/...注意:内层元素,即点击的目标元素必须是点击时真正的目标元素,而不是外面一层; currentTarget绑定相应想要点击的class的时候必须是做代理的即做事件监听的元素。

4.9K20

input获取焦点 原生js_原生js的input事件

1.onfocus 当input 获取到焦点时触发 2.onblur 当input失去焦点时触发,注意:这个事件触发的前提是已经获取了焦点再失去焦点的时候才会触发该事件,用于判断标签为空。...4.onkeydown 按下按键时的事件触发, 5.onkeyup 当按键抬起的时候触发的事件,在该事件触发之前一定触发了onkeydown事件–相当于一个按键,两个事件,没怎么用过 6.onclick...主要是用于 input type=button,input作为一个按钮使用时的鼠标点击事件 7.onselect 当input里的内容文本被选中后执行,只要选择了就会触发,不是全部选中 8.oninput...当input的value值发生变化时就会触发,(与onchange的区别是不用等到失去焦点就可以触发了) 使用方法: 以上事件可以直接放到input的属性里,例如: 1 , 可以通过js给input...dom元素添加相应的事件, 2 document.getElementByTagName(‘input’).onfocus = function(); 3 事件监听。

25.3K60

div实现绑定按键事件

问题背景 所有的页面都会引用一个公共js代码库base.js,在这个代码库里为document绑定了按键事件,现在需要为某个特殊的custom.html页面定制事件handler。 解决思路 1....作为js小白,首先想到的是在custom.html里重新为按键绑定一个customHandler来覆盖原来的handler $(document).keypress(customHandler); 测试的时候发现...js并不会覆盖,会先执行customHandler,再执行handler; 2....找资料发现了一个event.stopPropagation()可以停止事件传播,写进去发现不起作用,找到官方对这个函数的说明发现这个函数只能阻止元素的事件向上层元素传播,由于这两个处理器都绑定在document...那就制造上下级关系,把customHandler绑定在custom.html里的一个div元素上 $(“#divId”).bind("keypress",customHandler); 测试发现监听不到按键事件

1.2K10

【Node.JS事件绑定与触发

往期文章 【Node.JS】写入文件内容 【Node.JS】读取文件内容 目录 简介 绑定事件 on() addListener()  once() 监听事件emit()  传参  删除事件 removeListener...()  removeAllListeners() ---- 简介 node.js事件是使用events模块,通过实例化它里面的EventEmitter类,来绑定和监听事件。...绑定事件 on() const eve = require("events"); //导入模块 var event = new eve.EventEmitter(); //进行实例化声明 event.on...('namea', function () { console.log("坚毅的小解同志"); }) 查看绑定事件 const eve = require("events"); //导入模块...event.emit('namea', '小解');  once() once 只会绑定一次性的触发事件,触发一次后就会解除绑定

11K40

JS动态加载数据绑定事件--delegate() 方法

JS动态加载数据绑定事件-委托delegate() 方法 ---- W3C规范定义 定义和用法 delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数...使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。...---- JavaScript动态加载的数据,同时给他加载绑定事件,我选用Jquwey中的 delegate() 方法 我的理解,delegate()方法属于异步式加载绑定,dom元素加载未完成之前,可以委托给...delegate() 方法来实现绑定操作。...top-nav-left","click",function() { window.history.back(); }); }); ---- 第一个参数为 要点击的标签属性 第二个参数为 要绑定事件

7.8K30

JS 实现双向数据绑定

近几年前端技术栈真是发展的太迅速了,从以前的针对dom操作的框架如jquery,ext.js等框架逐步过渡到当前的mvvm模式,让前端开发者将注意力从dom操作逐渐解脱出来,专注于逻辑的实现,个人认为开发效率至少提升了...什么是数据的双向绑定? ?...双向数据绑定 上面说的是在vue框架中数据双向绑定的应用,个人认为这个特性很赞,是大幅提升开发效率的关键,那如果脱离mvvm的框架,我也想实现这种数据的双向绑定,可不可以实现了,该如何实现了?...用原生js模拟数据双向绑定 为了实现这个功能我们需要用到js的一个方法Object.defineProperty 1. 属性介绍 ? 属性介绍 2. 方法介绍 ?...方法介绍 大概的介绍了defineProperty核心的两个方法,看到这里,你就知道可以利用这两个内置方法搞事情了,看下面利用该方法实现数据双向绑定的一个例子 ?

2.5K10

【如果你要学JS 】——事件绑定及解除DOM事件

绑定事件)注册事件有两种方式:传统方式和方法监听注册方式1.1传统方式1.利用on开头的事件onclick2....该方法接收两个参数:●eventNameWithOn :事件类型字符串,比如onclick、onmouseover ,这里要带on●callback :事件处理函数,当目标触发事件时回调函数被调用2.删除事件...father.addEventListener('click', function () { alert('father') }, false); 注意:JS...// 当我们注册事件时,event 对象就会被系统自动创建,并依次传递给事件监听器(事件处理函数)。...e 就是个事件对象写到我们侦听函数的小括号里面当形参来看事件对象只有有了事件才会存在,它是系统给我们自动创建的,不需要我们传递参数.事件对象是我们事件的一系列相关数据的集合跟事件相关的比信息

14210

原生js获得八种方式,事件操作

08.17自我总结 关于js 一.原生js获得八种方式 通过ID获取(getElementById) 通过name属性(getElementsByName) 通过标签名(getElementsByTagName...document.documentElement) document.documentElement是专门获取html这个标签的 获取body的方法(document.body) document.body是专门获取body这个标签的 二.事件句柄...属性 当以下情况发生时,出现此事件 onabort 图像加载被中断 onblur 元素失去焦点 onchange 用户改变域的内容 onclick 鼠标点击某个对象 ondblclick 鼠标双击某个对象...重置按钮被点击 onresize 窗口或框架被调整尺寸 onselect 文本被选定 onsubmit 提交按钮被点击 onunload 用户退出页面 三.使用方法 1.获取单个元素 2.单个元素发送的事件

3.3K10
领券