问答

原生js如何监听数组长度

作者:admin 2021-06-23 我要评论

var data=[]; //--- 开始监听,书写监听 //--- 1.//data=[{id:1,name:'xx'},{id:2,name:'hh'}]//监听到数组长度是2 2.//data.push({id:3,name'yy'})//监听到数组...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

var data=[];
//---
开始监听,书写监听
//---
1.//data=[{id:1,name:'xx'},{id:2,name:'hh'}]//监听到数组长度是2
2.//data.push({id:3,name'yy'})//监听到数组长度是3
3.//data=[]//监听到数组长度是0

###

有很多办法:

  1. 使用 Proxy 对象包裹你的目标数组的 push 方法 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
  2. Object.defineProperty 覆盖你目标数组的 push 方法: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
  3. 直接覆盖目标对象的 push 方法, 并在方法内调用 Array.prototype.push.apply(this, arguments) 的方式来调用原始 Array 对象的 push 方法, 在前面和后面则可以加入你的逻辑

上述方法可能还需要包括 shift, splice, unshift, pop 等其它会改变数组长度的方法, 看你实际需求.

###
var data = [];
Object.defineProperty(window,data,{set() { return arr.length}})
data.push(1) // 1
###

一楼 vimac回答的听好了
这种东西 学习研究可以,如果项目使用的话,推荐使用已有成熟框架,比如 mobx

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 原生js如何监听数组长度

    原生js如何监听数组长度

  • 有适合萌新的nodejs中操作mysql的教程

    有适合萌新的nodejs中操作mysql的教程

  • php 如何去掉数字末尾的0

    php 如何去掉数字末尾的0

  • Vue packages version mismatch 版本不

    Vue packages version mismatch 版本不

腾讯云代理商
海外云服务器