美文网首页让前端飞Web开发三剑客....Web前端之路
[nodeJS技术宅]实现一个可事件驱动的数组对象

[nodeJS技术宅]实现一个可事件驱动的数组对象

作者: 铁甲万能狗 | 来源:发表于2019-07-09 13:30 被阅读10次

应用场景:

在写前端或nodejs项目的过程中,可能会遇到一种需求,例如从数据库中读取一组数据缓存到本地客户端通常是json数组,需要对该组数据的状态进行动态监控,一般来说状态的更改不外乎"增,删,改",让该组数据可以像其他dom元素一样可以实现事件驱动触发对应自定义函数的目的.

我们可以创建一个可观察数组,此特定实现将数组复制到一个新的ObservedArray对象中,并通过javascript的Object.defineProperty方法自定义ObservedArray的push(),pop(),shift(),unshift(),slice()和splice()方法以及自定义索引访问器。

类定义概述

ObservedArray定义了三个事件对象,以下使用es6以后推荐的类声明来实现ObservedArray

其中inserted对应"增加"的状态;

removed对应“删除”状态;

itemset对应“修改“的状态

prototype()方法中主要是封装上述所说的Object.defineProperty的具体现实

构造函数实现细节

defineIndexProperty方法用于实现使用类似数组下标的ObservedArray对象访问,例如 myArr[0]='a';myArr[1];等...

index访问器的是实现

addEventListener的现实

让ObservedArray可以象其他DOM一样进行事件监听

removeEventListener的现实细节

当ObservedArray不再参与运行时候,将其对应的处理器函数从事件队列中剔除

push的现实细节

push方法会触发inserted事件

pop的现实细节

pop方法会触发removed事件

unshift的现实细节

unshift方法会触发itemset和inserted事件

shift的现实细节

shift方法会触发removed事件

splice的现实细节

splice方法会触发removed和inserted事件

length属性的现实细节

length属性现实类似于Array对象访问

测试代码

运行实例-进行事件绑定

测试运行

测试代码

具体资料参考:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

相关文章

  • [nodeJS技术宅]实现一个可事件驱动的数组对象

    应用场景: 在写前端或nodejs项目的过程中,可能会遇到一种需求,例如从数据库中读取一组数据缓存到本地客户端通常...

  • nodejs——事件发射器

    Nodejs是基于V8引擎实现的事件驱动IO。事件模块Events是Nodejs的核心模块之一,许多模块都继承自E...

  • Node模块之事件(events)详解

    Node中的事件模型就是我们常见的订阅发布模式,Nodejs核心API都采用异步事件驱动,所有可能触发事件的对象都...

  • nodejs复习

    [nodejs复习] 1、为什么用Nodejs,它有哪些缺点? 事件驱动,通过闭包很容易实现客户端的生命活期。 不...

  • NodeJS单线程为什么可以实现并发

    事件驱动/事件循环 nodejs所谓的单线程,只是主线程是单线程,通过事件循环(event loop)来实现并发操...

  • Node-1

    事件驱动 NodeJs是单线程、非阻塞I/O的事件驱动;不同于Java/PHP/.net等服务器语言,NodeJs...

  • 链表的定义与使用

    链表实现简介 链表的本质是一个动态的对象数组,它可以实现若干个对象的存储; 在开发之中对象数组是一项非常实用的技术...

  • Nodejs事件循环

    Nodejs是基于事件驱动的,实际上与dom操作的操作事件差不多,诸如onclick之流 Nodejs定义事件需要...

  • 面向对象中,包和类的设计原则

    什么是面向对象技术 面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术 面向对象有哪些特...

  • 02.NodeJs基本语法

    一.认识NodeJs 1.NodeJs的事件驱动和异步IO 缺点: 2.npm介绍: ​ 是nodejs自带的...

网友评论

    本文标题:[nodeJS技术宅]实现一个可事件驱动的数组对象

    本文链接:https://www.haomeiwen.com/subject/yzxxkctx.html