mvvm和函数柯里化

MVVM架构模式和函数柯里化 Object相关静态方法

1.MVVM架构模式

2.函数柯里化

01-MVVM架构模式【重点】

`概念`MVVM是一种架构/设计模式。 MVVM是Model,View和ViewModel的简称

	Model: 模型层。 提供数据
    View: 视图层。 渲染页面
    ViewModel: 视图模型层 连接模型层和视图层的桥梁
    
 `核心`:实现了数据的双向绑定。数据驱动视图:当数据发生变化,视图会自动更新。
 
 `Object.defineProperty()实现MVVM架构`:
  <div id="app"></div>

    <script>
        // MVVM核心:数据的双向绑定,数据驱动视图

        // Model: 模型层  提供数据
        var model = {
   
   
            uname: '小妲己'
        }

        // ViewModel: 视图模型层  连接模型层和视图层
        /* 
            考虑:1. 什么时候访问了数据;2. 什么时候更新了数据
        */
        // 数据劫持
        var _uname = model.uname
        Object.defineProperty(model, 'uname', {
   
   
            get: function () {
   
   
                // 当访问了被监听的属性时触发
                console.log(new Date(), 'uname属性被访问了');
                // 注意:这里不能返回被监听的属性,否则会一直触发get方法,变成死循环
                // 解决:可以在劫持之前,将被监听的属性赋值给另一个临时变量
                return _uname
            },
            set: function (newVal) {
   
   
                // 当修改了被监听的属性时触发
                console.log(new Date(), 'uname属性被修改了', newVal);
                // 修改模型层的数据
                _uname = newVal
                // 通知视图层更新
                watch()
            }
        })


        // View: 视图层 渲染页面
        function render() {
   
   
            app.innerHTML = `<span>${
     
     model.uname}</span><button onclick="changeUname()">戳我呀~</button>`
        }

        render()

        function changeUname() {
   
   
            // 修改了被监听的属性,会触发set方法
            model.uname = '小貂蝉'
        }

        function watch() {
   
   
            render
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值