js-MVVC架构

article/2025/6/15 13:59:34

什么是MVVC?

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版

模型(Model) - 表示应用程序核心(数据)

视图(View)  - 用户界面

视图模型(ViewModel)- 连接View和Model,当数据发生改变,自动更新View。

MVVM框架最常见的特性之一就是数据的双向绑定

简单案例

对象的Object.defineProperty(obj,prop,descriptor)方法

obj:要定义属性的对象。
prop:要定义或修改的属性的名称或 Symbol 。
descriptor:要定义或修改的属性描述符。

 

 let model = {name: "张三",age: 12}Object.defineProperty(model, "name", {value: "李四",writable: true, //false不能重写,true能够重写enumerable: true, //表示是否可以被枚举(枚举就是可以被遍历),false不能,true可以configurable: true //configurable false不可以被删除,可以被删除  });// model.name = "kkakak";// console.log(model.name);// for (const key in model) {//     console.log(key);// }delete model.name;console.log(model);

对象的Object.defineProperty(obj,prop,descriptor)方法的作用,对对象的某个属性进行劫持来实现数据的双向绑定

 let model = {name: "张三",age: 23,sex: "男",address: "北京"}let _model = {...model}//对model进行浅拷贝for (let key in model) {if (key !== 'sex') {//对sex属性不进行劫持Object.defineProperty(model, key, {set(val) {//set方法是改变属性值的时候会自动触发这个方法
//由于改变属性值会触发set方法,所以这里在_model上面对属性值进行修改,才不会导致死循环_model[key] = val},
//get()方法当获取值的时候会自动触发这个方法get() {return _model[key]}})}}model.address = "成都"console.log(model.address);console.log(model);

 

 

es5的劫持对象

let model = {name: "张三",age: 13,loves: "赵敏",money: 12000}
//对整个对象进行劫持let _model = new Proxy(model, {
//target 是目标对象,key是属性名称,value是属性值set(target, key, value) {console.log("设置属性...");target[key] = value;},
//target是目标对象,key是属性名称get(target, key) {console.log("获取值...");return target[key];}})_model.name = "张无忌"console.log(_model);console.log(_model.name + "喜欢" + _model.loves);

 


http://chatgpt.dhexx.cn/article/KIwRHNW4.shtml

相关文章

mysql undo mvvc_MySQL之MVVC原理

什么是MVVC MVVC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,…

Mysql MVVC笔记

什么是MVVC,为什么要用它 在mysql的InnoDB不同事务隔离级别中,MVVC(Multi-Version Concurrency Control)工作在RC(Read Commited)和RR(Repeatable Read)这两种隔离级别中。其实MVVC简单理解,就…

MVC和MVVC的一些区别

前言 一、MVC 定义:Model(模型)-View(视图)-Controller(控制器),是一种将业务逻辑、数据、界面显示分离开来的软件设计模式,更偏向于后端。 目的:将模型和和…

js判断两个字符串是否相等的办法

js判断两个字符串是否相等的两种方法 1、使用比较运算符判断两个字符串是否相等 可以使用比较运算符 或 来判断两个字符串是否相等。例如: 1 2 3 4 5 6 7 const str1 apple const str2 apple if (str1 str2) { console.log(两个字符串相等) } else { con…

java string 不相等_java判断字符串是否不相等的方法

1、判断地址是否相等 用: Object类作为所有类的超类,而Object类的equals方法是直接比较地址的,源码如下:public boolean equals(Object obj) { return this obj; } 2、判断值是否相等 用:equals方法 equals() 方法用于…

java if判断是否相等_java使用if语句判断字符串是否相等的方法

java使用if语句判断字符串是否相等的方法 发布时间:2020-06-23 19:48:51 来源:亿速云 阅读:133 作者:Leah 本篇文章展示了java使用if语句判断字符串是否相等的方法,代码简明扼要容易理解,绝对能让你眼前一亮…

MySQL 中判断字符串是否相等

感谢&#xff1a; https://blog.csdn.net/yangfengjueqi/article/details/72821603 mysql 中判断两个字符串是否相等可以用 <>或者 例 但是需要注意<>&#xff0c;和 是有区别的 当判断是都为空的时候&#xff0c;有如下结果 是因为 null值是没有意义的&#x…

html页面判断是否相等,javascript如何判断字符串是否相等

有时候我们在编写JavaScript代码的时候&#xff0c;需要判断两个字符串是否相等&#xff0c;这样怎么操作&#xff1f;下面本篇文章就来给大家介绍一下&#xff0c;希望对大家有所帮助。 在javascript中判断字符串是否相等&#xff0c;一般使用相等运算符“”或者“”进行比较判…

equals判断字符串是否相等

在Java中判断两个字符串是否相等&#xff0c;需要使用equals方法&#xff1b; 语法&#xff1a;字符串1.equals(字符串2) 如果字符串1等于字符串2返回true&#xff0c;否则返回false&#xff1b; 输出&#xff1a; str与str1是否相等true例题 在数组中查找指定字符串位置 …

java使用==和equals()判断字符串是否相等

equals()方法&#xff1a; equals()方法用于将字符串与指定的对象比较。String类中重写了equals()方法用于比较两个字符串的内容是否相等。 语法&#xff1a; //object:与字符串进行比较的对象 public boolean equals(Object anObject)返回值&#xff1a; 如果给定对象与字…

html页面判断是否相等,javascript怎么判断字符串是否相等?

在javascript中可以对字符串进行各种操作&#xff0c;下面本篇文章就来给大家介绍如何使用javascript对字符串进行相等判断&#xff0c;希望对大家有所帮助。 在javascript中判断字符串是否相等&#xff0c;一般使用相等运算符“”或者“”进行比较判断。 1、使用“”进行比较 …

java字符串判断相等_java判断字符串是否相等的方法

java判断字符串是否相等的方法&#xff1a; 1、java中字符串的比较&#xff1a; 我们经常习惯性的写上if(str1str2)&#xff0c;这种写法在java中可能会带来问题 example1:String a"abc"; String b"abc" 那么ab将返回true。因为在java中字符串的值是不可改…

JAVA中判断两个字符串是否相等

Java中判断字符串是否相等 相等判断操作符 Java中&#xff0c; 相等判断符用于判断基本数据类型和引用数据类型。当判断基本数据类型时&#xff0c;判断的是数值&#xff0c;当判断引用数据类型时&#xff0c;判断变量是否指向同一引用对象。 使用 判断字符串时&#xff0c…

检测字符串是否相等

1、可以使用equals方法检测两个字符串是否相等 2、也可以使用compareTo方法进行比较 当比较两个字符串是否相等而不区分大小写时&#xff0c;也可以使用 equalsIgnoreCase compareToIgnoreCase 这两个进行判断 public static void main(String[] args) {String a "a…

Vue计算属性Computed传参

关于computed计算属性传参的问题&#xff0c;因为computed是计算属性&#xff0c;如果给conputed传参则会直接报错&#xff0c;并且报computed is not function。 解决办法&#xff1a; 方法一&#xff1a; 通过返回函数来进行传参&#xff1a; 代码&#xff1a; computed:{ …

vue计算属性与监视属性

计算属性与监视属性 计算属性 在computed对象中定义计算属性的方法&#xff0c;在页面中使用{{方法名}} 监视属性 通过 vm对象中的$watch方法或者 watch配置来监视指定的属性&#xff0c; 当属性发生变化时&#xff0c;回调函数自动调用&#xff0c;在函数内部进行计算 使用v…

vue 计算属性

计算属性&#xff1a; 1、定义&#xff1a;要用的属性不存在&#xff0c;要通过已有属性计算得来。 2、原理&#xff1a;底层借助了object.defineproperty方法提供的getter和setter。 3、get函数什么时候执行&#xff1f; &#xff08;1&#xff09;初次读取时会执行一次。 &am…

【vue】计算属性

vue官网对于计算属性的描述&#xff1a; 模板内的表达式非常便利&#xff0c;但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。 当你想要在模板中的多处包含此翻转字符串时&#xff0c;就会更加难以处理。所以&#xff0c;对于任何复杂逻辑…

Vue计算属性实现成绩单,Vue计算属性

Vue计算属性实现成绩单 代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>成绩单统计</title><script src"js/vue.js" type"text/javascript" charset"utf-8"…

Vue-计算属性

一、计算属性的使用 【什么是计算属性】 ——写在computed对象中的属性&#xff0c;本质上是一个方法&#xff0c;不过使用时依旧当属性来使用&#xff01; 1.计算属性&#xff1a;首先它是一个属性&#xff0c;所以使用方式跟其他的属性没什么&#xff0c;就是定义的时候不同…