vue数据绑定原理

来点基础知识:

属性值是函数的属性叫方法。

对象就是属性和方法的集合。

我们来谈谈属性。

属性表面上来看就好像是键值对

var 我是对象 = {
	我是属性名:‘我是属性值‘
}
console.log(我是对象.我是属性名)//我是属性值

  然后来介绍下一个增改属性的方法Object.defineProperty()

Object.defineProperty(我是对象,‘我是新增属性‘,{
    // 这个对象是用来修饰属性的,即属性的特征属性
    // 就是我们看到的属性值
    value:‘我是新增属性的属性值‘,
    // 这个新增属性是否可以被删或者是否可以再次设置这个属性特征对象。
    configurable:true | false,
    // 是否可以被枚举到
    enumerable:true | false,
    // 是否只读
    writable:true | false,
    // 以下是重点:
    // 读取该属性值时触发get函数
    get:function() {},
    // 修改该属性值时出发set函数
    set:function(value) {}
})

  介绍完毕。

下面来动手实现下vue的数据绑定。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <input id="input" type="text" placeholder="写点东西试试">
    <p id="text"></p>
<script type="text/javascript">
var obj ={
    name:‘hhh‘
}
Object.defineProperty(obj,‘name‘,{
    set:function(value) {
        document.getElementById(‘text‘).innerText = value
        document.getElementById(‘input‘).value = value
    }
})
document.getElementById(‘input‘).addEventListener(‘keyup‘,function(event) {
        obj.name = event.target.value

})
</script>
</body>
</html>
时间: 2024-10-13 13:55:40

vue数据绑定原理的相关文章

杂记--关于vue数据绑定原理

1.vue数据双向绑定(v-model) 主要实现依赖于数据的劫持,及观察订阅者模式的使用,其中Object.defineProperty()为核心 作用:定义或修改一个对象上的相关属性及其相关的操作 语法: Object.defineProperty(obj, prop, descriptor) 其中: obj: 需要被操作的目标对象 prop: 目标对象需要定义或修改的属性的名称 descriptor: 将被定义或修改的属性的描述符,分为数据描述符or存取描述符: 用bject.define

Vue数据绑定原理及简单实现

本篇文章中的代码只是部分片段,完整代码存放于github上https://github.com/Q-Zhan/simple-vue. 进入正文~实现数据绑定主要是要实现两个方面的功能:数据变化导致视图变化,视图变化导致数据变化.后者比较容易实现,就是监听视图的事件,然后在回调函数中改变数据.所以重点是数据变化时如何改变视图. 这里的思路是通过object.defineProperty()来对数据的属性设置一个set函数,设置后当数据改变时set函数就会被调用,我们就可以里面进行视图更新操作. 具

vue双向数据绑定原理探究(附demo)

昨天被导师叫去研究了一下vue的双向数据绑定原理...本来以为原理的东西都非常高深,没想到vue的双向绑定真的很好理解啊...自己动手写了一个. 传送门 双向绑定的思想 双向数据绑定的思想就是数据层与UI层的同步,数据再两者之间的任一者发生变化时都会同步更新到另一者. 双向绑定的一些方法 目前,前端实现数据双向数据绑定的方法大致有以下三种: 1.发布者-订阅者模式(backbone.js) 思路:使用自定义的data属性在HTML代码中指明绑定.所有绑定起来的JavaScript对象以及DOM元

vue和angular双向数据绑定原理

都是视图和数据的双向传递: angular双向数据绑定原理: 就是通过脏值检测的方式判断数据是否有变更: 当数据中的值改变的化,就会到$degiest(是vue内部的方法)中循环查找,当值不改变了,就会把数据显示到视图中: vue双向数据绑定原理: 数据劫持,使用ES5的Object.definpropoty() 方法监控的数据,数据的读取使用的是setter和getter,用于视图和数据的同步绑定:

vue中实现双向数据绑定原理,使用了Object.defineproperty()方法,方法简单

在vue中双向数据绑定原理,我们一般都是用v-model来实现的 ,但一般在面试话会问到其实现的原理, 方法比较简单,就是利用了es5中的一个方法.Object.defineproperty(),它有三个参数, Object.defineproperty(obj,'val',attrObject), 参数1: obj是属性所在的对象,参数2: 'val',属性名,它是一个string类型,参数3: {}属性所描述的对象 详情可以看Object.defineproperty的文档 下面直接上dem

Vue工作原理小结

本文能帮你做什么?1.了解vue的双向数据绑定原理以及核心代码模块2.缓解好奇心的同时了解如何实现双向绑定为了便于说明原理与实现,本文相关代码主要摘自vue源码, 并进行了简化改造,相对较简陋,并未考虑到数组的处理.数据的循环依赖等,也难免存在一些问题,欢迎大家指正.不过这些并不会影响大家的阅读和理解,相信看完本文后对大家在阅读vue源码的时候会更有帮助<本文所有相关代码均在github上面可找到 https://github.com/DMQ/mvvm 相信大家对mvvm双向绑定应该都不陌生了,

理解vue实现原理,实现一个简单的Vue框架

参考: 剖析Vue实现原理 - 如何实现双向绑定mvvm Vue.js源码(1):Hello World的背后 Vue.js官方工程 本文所有代码可以在git上找到. 其实对JS我研究不是太深,用过很多次,但只是实现功能就算了.最近JS实在是太火,从前端到后端,应用越来越广泛,各种框架层出不穷,忍不住也想赶一下潮流. Vue是近年出的一个前端构建数据驱动的web界面的库,主要的特色是响应式的数据绑定,区别于以往的命令式用法.也就是在var a=1;的过程中,拦截'='的过程,从而实现更新数据,w

Vue数据绑定

gitHub地址:https://github.com/lily1010/vue_learn/tree/master/lesson04 一 双括号用来数据绑定 (1)写法一: {{message}},这种可以实时响应 (2)写法二: {{*message}},单次插值,今后的数据变化就不会再引起插值更新了 (3)双括号标签也可以用在属性上 举个栗子: <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q

vue路由原理

Vue路由原理 目前实现路由的方式有两中,vue通过参数mode来设置,默认是hash模式. 利用URL中的hash('#')来实现 利用History interface在HTML5中新增的方法 history对应的是HTML5History对象,hash对应的是HashHistory对象,abstract对应的是AbstractHistory对象.在初始化对应的history之前,会对mode做一些校验:若浏览器不支持HTML5History方式(通过supportsPushState遍历判