最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

lodash內(nèi)部方法getFuncName及setToString剖析詳解

 更新時間:2022年09月01日 08:46:31   作者:EricHong  
本篇章我們主要是通過了解lodash里的兩個內(nèi)部方法getFuncName方法和setToString方法,在實(shí)際開發(fā)中我們也可以借鑒方法的實(shí)現(xiàn)思路,在需要的時候簡單封裝一下,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

getFuncName

getFuncName方法主要是獲取參數(shù)func的name屬性。

實(shí)現(xiàn)上主要通過函數(shù)的name屬性去獲取,同時也兼容原型鏈上屬性判斷。

源碼如下:

import realNames from './_realNames.js';
var objectProto = Object.prototype;
var hasOwnProperty = objectProto.hasOwnProperty;
function getFuncName(func) {
  var result = (func.name + ''),
      array = realNames[result],
      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
  while (length--) {
    var data = array[length],
        otherFunc = data.func;
    if (otherFunc == null || otherFunc == func) {
      return data.name;
    }
  }
  return result;
}

realNames

realNames方法源碼實(shí)現(xiàn)是賦值一個空對象,方便后續(xù)引用和保存。

源碼如下:

var realNames = {};

setToString

setToString方法主要是將參數(shù)“func”的“toString”方法設(shè)置為返回“string”。

該方法返回一個函數(shù)。

參數(shù)說明:

  • 參數(shù)1:func要修改的函數(shù)。
  • 參數(shù)2:字符串“toString”結(jié)果。

setToString方法在實(shí)現(xiàn)上借助了baseSetToString內(nèi)部方法和shortOut內(nèi)部方法。

源碼如下:

import baseSetToString from './_baseSetToString.js';
import shortOut from './_shortOut.js';
var setToString = shortOut(baseSetToString);

baseSetToString

import constant from './constant.js';
import defineProperty from './_defineProperty.js';
import identity from './identity.js';
var baseSetToString = !defineProperty ? identity : function(func, string) {
  return defineProperty(func, 'toString', {
    'configurable': true,
    'enumerable': false,
    'value': constant(string),
    'writable': true
  });
};

constant

constant方法是lodash對外導(dǎo)出的方法,該方法可以創(chuàng)建一個返回參數(shù)value的函數(shù),返回的是新的常量函數(shù)。

使用如下:

var objects = _.times(2, _.constant({ 'a': 1 }));
console.log(objects);
// => [{ 'a': 1 }, { 'a': 1 }]
console.log(objects[0] === objects[1]);
// => true

源碼如下:

function constant(value) {
  return function() {
    return value;
  };
}

defineProperty

defineProperty方法通過getNative獲取原生的Object.defineProperty方法。

源碼如下:

import getNative from './_getNative.js';
var defineProperty = (function() {
  try {
    var func = getNative(Object, 'defineProperty');
    func({}, '', {});
    return func;
  } catch (e) {}
}());

identity

identity方法在之前的方法的篇章中介紹過,主要是返回參數(shù)本身,方便在迭代中的函數(shù)調(diào)用,是一種傳參形式。

源碼如下:

function identity(value) {
  return value;
}

shortOut

在《 lodash里內(nèi)部方法getData和setData的實(shí)現(xiàn) 》中我們了解到shortOut方法的實(shí)現(xiàn)。

小結(jié)

本篇章我們簡單了解了lodash里的兩個內(nèi)部方法getFuncName和setToString的實(shí)現(xiàn),同時我們也在了解實(shí)現(xiàn)的過程中認(rèn)識到了constant、defineProperty等內(nèi)部方法的實(shí)現(xiàn),更多關(guān)于lodash內(nèi)部方法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序(應(yīng)用號)簡單實(shí)例應(yīng)用及實(shí)例詳解

    微信小程序(應(yīng)用號)簡單實(shí)例應(yīng)用及實(shí)例詳解

    這篇文章主要介紹了微信小程序(應(yīng)用號)簡單實(shí)例應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • autojs長寬不定的圖片在正方形圖片居中實(shí)現(xiàn)詳解

    autojs長寬不定的圖片在正方形圖片居中實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了autojs長寬不定的圖片在正方形圖片居中實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 探索JavaScript未來模式匹配的引入分析

    探索JavaScript未來模式匹配的引入分析

    這篇文章主要來帶大家探索JavaScript的未來,關(guān)于模式匹配的引入為編程體驗(yàn)帶來革命性變化分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 微信小程序 canvas API詳解及實(shí)例代碼

    微信小程序 canvas API詳解及實(shí)例代碼

    這篇文章主要介紹了微信小程序 canvas API詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 通過修改referer下載文件的方法

    通過修改referer下載文件的方法

    遇到了一個郁悶的事:如果讓Http對象作全局變量,那么onreadystatechange只會在第一次執(zhí)行時觸發(fā),以后都不會觸發(fā)這個事件了。 只好在每次Down文件時重新創(chuàng)建一個XmlHttp對象。
    2008-05-05
  • WebWorker 封裝 JavaScript 沙箱詳情

    WebWorker 封裝 JavaScript 沙箱詳情

    這篇文章主要介紹了WebWorker 封裝 JavaScript 沙箱,在前文 quickjs 封裝 JavaScript 沙箱詳情 已經(jīng)基于 quickjs 實(shí)現(xiàn)了一個沙箱,今天這篇文章再基于 web worker 實(shí)現(xiàn)備用方案,需要的朋友可以參考一下
    2021-10-10
  • 常用的前端JavaScript方法封裝

    常用的前端JavaScript方法封裝

    這篇文章主要向大家介紹的是一些常用的前端JavaScript方法封裝,數(shù)組去重、字符串去重、深拷貝 淺拷貝、reverse底層原理和擴(kuò)展、圣杯模式的繼承等多個方法,需要的朋友可以閱讀下文的具體內(nèi)容
    2021-09-09
  • Fabric.js 修改畫布交互方式作用詳解

    Fabric.js 修改畫布交互方式作用詳解

    這篇文章主要為大家介紹了Fabric.js 修改畫布交互方式作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • js面向?qū)ο缶幊蘋OP及函數(shù)式編程FP區(qū)別

    js面向?qū)ο缶幊蘋OP及函數(shù)式編程FP區(qū)別

    這篇文章主要為大家介紹了js面向?qū)ο缶幊蘋OP及函數(shù)式編程FP的區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 微信小程序支付之c#后臺實(shí)現(xiàn)方法

    微信小程序支付之c#后臺實(shí)現(xiàn)方法

    這篇文章主要介紹了微信小程序支付之c#后臺實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10

最新評論

浦县| 石首市| 资源县| 雷波县| 团风县| 凤冈县| 勐海县| 柘荣县| 修武县| 安西县| 德庆县| 恩施市| 库尔勒市| 永丰县| 康保县| 彭山县| 杭州市| 洛阳市| 兴义市| 北票市| 兰溪市| 丹巴县| 塔城市| 上栗县| 邹平县| 甘德县| 芜湖县| 同江市| 天门市| 宜章县| 大埔区| 陈巴尔虎旗| 东至县| 宁河县| 体育| 二手房| 拉萨市| 深圳市| 新疆| 南木林县| 怀宁县|