笔记--回调函数、计算属性、vm监听、深度监听

复习

1:回调函数的3个问题

什么时候执行回调,作用是什么,this指向什么

2:vm监视data中数据的特点

1:vue会监视data中所有层次的属性 set方法监视

2:对象中的属性数据通过添加set方法来实现监视

3:数组中的元素也实现了监视:重写数组一系列更新元素方法

   1)调用原生对应的方法对元素进行处理

   2)去更新界面    

(Vue文档数组变化检测中,Vue将观察数据的变化数组方法包裹起来---(Vue重写了数组的方法)以便在调用这些方法时,能够触发视图更新。)

push() pop()删除最后的元素  shift()添加第一位 unshift()删除第一位 splice()删改 sort()排序 reverse()翻转倒序

3:Vue.js是什么

Object.defineProperty() 原生js就自带的方法

vue也是js 他就是一个封装了js的库而已

Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性。

vue原理

Object.defineProperty(对象,属性名,{get,set等配置})

data.name="李四" 设置值 就会触发set

vue原理

vue通过原生js的Object.defineProperty监听到了 我们写的data数据

这个data里面的数据 有修改 就会触发 Object.defineProperty 里面的set

在set里面 我们可以获取到最新的修改的值 去页面上 正则匹配到对应地方 替换修改

 

1)作用:动态构建用户界面

2)特点:

遵循MVVM模式

编码简介,体积小,运行效率高,移动、PC端开发

他本身只关注UI,可以轻松引入vue插件和其他第三方库开发项目

3)与其他框架的关联

借鉴angular的模板和数据绑定技术

借鉴react的组件化和虚拟DOM技术

4)vue包含一系列扩展插件

vue-cli:vue脚手架

vue-resource(axios):ajax请求

vue-router:路由

vuex:状态管理

vue-lazyload:图片懒加载

vue-scroller:页面滑动相关

mint-ui:基于vue的组件库(移动端)

element-ui:基于vue的组件库(PC端)

4)Vue对象的选项

1--el:

指定dom标签容器的选择器

Vue就会管理对应的标签及子标签

也可以通过$mount()来处理

2--data:

对象或函数类型

指定初始状态属性数据的对象

vm也会自动拥有data中所有属性 (data中定义m,则vm中有m,有get,set属性,调用this.m时,调用的是get属性,赋值时调用set方法,保存到data中,这称为数据代理)

页面中可以直接访问使用

数据代理: 由vm对象来代理对data中所有属性的操作(读、写)

data数据监视的特点:

1:vue会监视data中所有层次的属性

2:对象中的属性数据通过添加set方法来实现监视

3:数组中的元素也实现了监视:重写数组一系列更新元素的方法

1)调用原生对应的方法对元素进行处理

2)去更新界面

3--methods

包含多个方法的对象

供页面中的事件指令来绑定回调

回调函数默认有event参数,但也可以指定自己的参数

所有的方法由vue对象来调用,访问data中的属性且直接使用this.xxx

4--computed

包含多个计算属性的对象

计算属性可能为函数,也可能为对象(包含get和set方法)

根据已有属性进行计算返回一个新的数据,供页面获取显示

如果同时还需要监视计算属性的变化,需要使用getter/setter

计算属性有缓存,内部使用对象容器缓存(对象容器的值存的是计算属性值,名字是计算属性名),可以减少计算的次数

如何给对象定义get/set属性

--对象创建之后指定:

Object.defineProperty(obj,age, //不支持ie8
{
    get(){},
    set(value){}
})

在创建对象时指定:get name(){return xxx } /set name(value){}   //给name设定get set方法。

5--watch

包含多个属性监视的对象

分为 一般监视和深度监视

watch:{

    'xxx.yyy': function(newValue,oldValue){
        //深度监听建议不要简写
    
    },
    'xxx':{
        deep: true, //xxx变了知道,xxx.yyy变了也知道  变了之后触发hander
        handler: (value) {
            
        }
    },
    
    name(newValue,oldValue){

        
    }
}
//另一种添加监视方法
vm.$watch('xxx',funn)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值