iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >lodash内部方法getData和setData实例解析
  • 259
分享到

lodash内部方法getData和setData实例解析

2024-04-02 19:04:59 259人浏览 独家记忆
摘要

目录getDatametaMapWeakMapnoopgetData源码实现setDatabaseSetDatametaMapshortOutsetData源码实现小结getData

getData

getData方法主要是获取方法的元数据metadata。

getData实现上借助metaMap和noop两个内部方法。

metaMap

metaMap方法获取当前环境下的WeakMap对象。

import WeakMap from './_WeakMap.js';
var metaMap = WeakMap && new WeakMap;

WeakMap

getNative方法和root变量在之前的篇章介绍过,主要是获取环境变量和全局方法。

源码如下:

import getNative from './_getNative.js';
import root from './_root.js';
var WeakMap = getNative(root, 'WeakMap');

noop

noop主要是获取undefined的返回结果。

源码如下:

function noop() {}

getData源码实现

import metaMap from './_metaMap.js';
import noop from './noop.js';
var getData = !metaMap ? noop : function(func) {
  return metaMap.get(func);
};

setData

setData方法可以设置参数func的元数据。

参数说明:

  • 参数1:表示要关联元数据的函数
  • 参数2:表示对元数据进行数据处理。

setData实现上需要借助两个内部方法,分别是:baseSetData和shortOut。

baseSetData

baseSetData是setData的基本实现,通过Map对象存储函数与数据的映射关系。

实现上借助identity方法和metaMap方法,identity方法在之前篇章中介绍过,主要是代表函数一种调用关系,该方法返回参数。metaMap方法主要是调用Map对象,这个方法在上面getData里已经介绍过了。

import identity from './identity.js';
import metaMap from './_metaMap.js';
var baseSetData = !metaMap ? identity : function(func, data) {
  metaMap.set(func, data);
  return func;
};

metaMap

shortOut

shortOut方法用于按照毫秒范围内的调用数检测热函数,可以创建一个函数,该函数将缩短并调用identity方法。

实现上通过闭包计数,只有满足调用的时间差小于HOT_SPAN时才会进入后续判断,否则count初始化为0,并且直接返回原函数以及参数关系等。

在后续处理中只有count满足大于等于HOT_COUNT时直接返回arguments[0]。

源码如下:

var HOT_COUNT = 800,
    HOT_SPAN = 16;
function shortOut(func) {
  var count = 0,
      lastCalled = 0;
  return function() {
    var stamp = nativeNow(),
        remaining = HOT_SPAN - (stamp - lastCalled);
    lastCalled = stamp;
    if (remaining > 0) {
      if (++count >= HOT_COUNT) {
        return arguments[0];
      }
    } else {
      count = 0;
    }
    return func.apply(undefined, arguments);
  };
}

setData源码实现

import baseSetData from './_baseSetData.js';
import shortOut from './_shortOut.js';
var setData = shortOut(baseSetData);

小结

本篇章我们了解到getData和setData方法实现,主要是通过Map对象对参数设置元数据,同时我们也了解到内部其他方法metaMap、noop、shortOut等方法的实现,更多关于lodash方法getData setData的资料请关注编程网其它相关文章!

--结束END--

本文标题: lodash内部方法getData和setData实例解析

本文链接: https://www.lsjlt.com/news/166404.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • lodash内部方法getData和setData实例解析
    目录getDatametaMapWeakMapnoopgetData源码实现setDatabaseSetDatametaMapshortOutsetData源码实现小结getData...
    99+
    2024-04-02
  • lodash内部方法getFuncName及setToString剖析详解
    目录getFuncNamerealNamessetToStringbaseSetToStringconstantdefinePropertyidentityshortOut小结get...
    99+
    2024-04-02
  • React内部实现cache方法示例详解
    目录引言分析实现思路参数的顺序区别处理引用类型、原始类型参数缓存的垃圾回收实现原理如何解决参数的顺序?如何处理引用类型值总结引言 前几天写的一篇介绍use这个新hook的文章中聊到R...
    99+
    2022-11-13
    React内部实现cache方法 React cache
  • 亚马逊内部服务器错误:解析和解决方法
    1. 了解亚马逊内部服务器错误 亚马逊作为全球最大的电子商务平台之一,每天处理着海量的用户请求和数据交互。然而,有时候用户可能会遇到亚马逊内部服务器错误,这可能导致无法访问网站、购物车无法加载、订单无法完成等问题。 2. 探索可能的原因 ...
    99+
    2023-10-27
    亚马逊 解决方法 错误
  • 解析ConcurrentHashMap: 预热(内部一些小方法分析)
    目录1、spread(int h)方法2、tabAt方法3、casTabAt方法4、setTabAt方法5、resizeStamp方法6、tableSizeFor方法7、构造方法(复...
    99+
    2024-04-02
  • java内部类实例化的方法是什么
    Java内部类实例化的方法有两种:1. 非静态内部类实例化:外部类实例名.内部类实例名 = 外部类实例名.new 内部类构造方法()...
    99+
    2023-09-26
    java
  • 解析ConcurrentHashMap:成员属性、内部类、构造方法
    目录1、简介2、JDK1.8 ConcurrentHashMap结构图3、成员属性4、静态属性5、静态代码块6、内部类6.1 Node节点6.2 ForwardingNode节点6....
    99+
    2024-04-02
  • 深入理解Golang方法的内部实现
    Golang是由Google开发的一种静态类型的编程语言,以其简洁的语法和高效的性能而备受程序员欢迎。在Golang中,方法是一种特殊的函数,用于为结构体添加行为。本文将深入探讨Gol...
    99+
    2024-02-23
    深入理解 内部实现 golang方法
  • JavaScript内存管理和GC算法实例分析
    本文小编为大家详细介绍“JavaScript内存管理和GC算法实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript内存管理和GC算法实例分析”文章能帮助大家解决疑惑,下面跟着小编的思...
    99+
    2024-04-02
  • Java面向对象之方法中内部类的示例分析
    这篇文章主要为大家展示了“Java面向对象之方法中内部类的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java面向对象之方法中内部类的示例分析”这篇文章吧。public cl...
    99+
    2023-06-02
  • Vue插槽slot全部使用方法示例解析
    目录何为插槽示例解析插槽的基本使用具名插槽作用域插槽总结何为插槽 我们都知道在父子组件间可以通过v-bind,v-model搭配props 的方式传递值,但是我们传递的值都是以一些数...
    99+
    2023-03-19
    Vue插槽slot用法 Vue slot Vue插槽
  • JavaScript基础之静态方法和实例方法的示例分析
    小编给大家分享一下JavaScript基础之静态方法和实例方法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!直接定义在...
    99+
    2024-04-02
  • vue中实例方法和数据的示例分析
    小编给大家分享一下vue中实例方法和数据的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.vm.$set问题描述:如何...
    99+
    2024-04-02
  • 云服务器ecs实例类型有哪些内容和方法分析
    云服务器ecs实例类型可以提供一系列的方法和属性,以下是一些常见的云服务器ecs实例类型的内容和方法分析: CPU 使用量的分析 云服务器ecs实例类型通常是虚拟机的一种形式,因此CPU使用量可以用于评估它的性能和可扩展性。在以下步骤...
    99+
    2023-10-27
    实例 类型 服务器
  • 部署云服务器的事例有哪些内容和方法
    购买和租用: 确定云服务器供应商和服务器类型,并进行评估和比较。 选择合适的供应商,并检查其提供的服务和价格。 下载云服务器的安装和配置软件,并将其添加到您的计算机上。 注册和使用云服务器提供商的服务,包括在线存储、备份、灾难恢复等...
    99+
    2023-10-27
    事例 服务器 方法
  • Java Class 解析器实现方法示例
    最近在写一个私人项目,名字叫做ClassAnalyzer,ClassAnalyzer的目的是能让我们对Java Class文件的设计与结构能够有一个深入的理解。主体框架与基本功能已经完成,还有一些细节功能日后再增加。实际上JDK已经提供了命...
    99+
    2023-05-31
    java 解析器 ava
  • Java方法引用原理实例解析
    目录冗余的Lambda场景问题分析用方法引用改进代码方法引用符通过对象名引用成员方法通过类名称引用静态方法通过super引用成员方法通过this引用成员方法类的构造器引用数组的构造器...
    99+
    2024-04-02
  • Java类变量和类方法实例分析
    本篇内容介绍了“Java类变量和类方法实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.static静态变量静态变量被同一个类的所有...
    99+
    2023-06-30
  • JavaScript常用方法和封装实例分析
    这篇文章主要介绍了JavaScript常用方法和封装实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript常用方法和封装实例分析文章都会有所收获,下面我们一起来看看吧。1.字符串相关1.1 ...
    99+
    2023-06-29
  • PythonCSV文件解析和生成方法示例
    目录思路Python with CSVCSV 格式使用 Python 的 csv 库其他思路 简单的生成和读取 CSVCSV 文件格式使用 csv 库 Python with CSV...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作