国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

學習筆記:util

chenjiang3 / 3321人閱讀

摘要:類型判斷類型判斷總結常用工具類的封裝含義注意這里因為判斷運行環境判斷一個函數是宿主環境提供的還是用戶自定義的所以緩存函數計算結果參考原碼解析

類型判斷

1.
https://github.com/chenshenha...

/**
 * 類型判斷
 * @type {Object}
 */
let UtilType = {
  isPrototype: function( data ) {
    return Object.prototype.toString.call(data).toLowerCase();
  },

  isJSON: function( data ) {
    return this.isPrototype( data ) === "[object object]";
  },

  isFunction: function( data ) {
    return this.isPrototype( data ) === "[object function]";
  }
}

2.
javascript 總結(常用工具類的封裝)
3.isaacs/core-util-is

function isArray(arg) {
  if(Array.isArray) {
    return Array.isArray(arg);
  }
  return objectToString(arg) === "[object Array]"
}
exports.isArray = isArray;

function isBoolean(arg) {
  return typeof arg === "boolean";
}
exports.isBoolean = isBoolean;

function isNull(arg) {
  return arg === null;
}
exports.isNull = isNull;

function isNullOrUndefined(arg) {
  return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;

function isNumber(arg) {
  return typeof arg === "number";
}
exports.isNumber = isNumber;

function isString(arg) {
  return typeof arg === "string";
}
exports.isString = isString;

function isSymbol(arg) {
  return typeOf arg === "symbol";
}
exports.isSymbol = isSymbol;

function  isUndefined(arg) {
  return arg === void 0;
}
exports.isUndefined = isUnderfined;

function isRegExp(re) {
  return objectToString(re) === "[object RegExp]";
}
exports.isRegExp = isRegExp;

function isObject(arg) {
  return typeOf arg === "object" && arg !== null;
}
exports.isObject = isObject;

function isDate(d) {
  return obejectToString(d) === "[object Date]";
}
exports.isDate = isDate;

function isError(e) {
  return (objectToString(e) === "[object Error]" || e instanceof Error);
}
exports.isError = isEerror;

function isFunction(arg) {
  return typeof arg === "function";
}
exports.isFunction = isFunction;

function isPrimitive(arg) {
  return arg === null ||
         typeof arg === "boolean" ||
         typeof arg === "number" ||
         typeof arg === "string" ||
         typeof arg === "symbol" ||//ES6 symbol
         typeof arg === "undefined";
}
exports.isPrimitive = isPrimitive;

exports.isBuffer = Buffer.isBuffer;

function objectToString(o) {
  return Object.prototype.toString.call(o);
}

javascript:void(0) 含義
注意這里

function isObject(arg) {
  return typeOf arg === "object" && arg !== null;
}

因為

判斷JS運行環境
const inBrowser = typeof window !== "undefined"

const inWeex = typeof WXEnvironment !== "undefined" && !!WXEnvironment.platform
const weexPlatform = inWeex && WXEnvironment.platform.toLowerCase()

const UA = inBrowser && window.navigator.userAgent.toLowerCase()

const isIE = UA && /msie|trident/.test(UA)
const isIE9 = UA && UA.indexOf("msie 9.0") > 0
const isEdge = UA && UA.indexOf("edge/") > 0
const isAndroid = (UA && UA.indexOf("android") > 0) || (weexPlatform === "android")
const isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === "ios")
const isChrome = UA && /chrome/d+/.test(UA) && !isEdge
const isPhantomJS = UA && /phantomjs/.test(UA)
const isFF = UA && UA.match(/firefox/(d+)/)
判斷一個函數是宿主環境提供的還是用戶自定義的
console.log.toString()
// "function log() { [native code] }"

function fn(){}
fn.toString()
// "function fn(){}"

// 所以
function isNative (Ctor){
  return typeof Ctor === "function" && /native code/.test(Ctor.toString())
}
緩存函數計算結果 參考

underscorejs原碼解析
https://juejin.im/post/5c601f...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107262.html

相關文章

  • “React組件間通信”學習筆記

    React沒有雙向通信那么自由,而是單向的,即從父組件到子組件。 父組件->子組件:props 子組件->父組件:callback 子組件->子組件:子組件通過回調改變父組件中的狀態,通過props再修改另一個組件的狀態 父子組件間通信 var CalendarControl = React.createClass({ getDefaultProps: function () { ...

    darcrand 評論0 收藏0
  • 游戲人工智能 讀書筆記 (四) AI算法簡介——Ad-Hoc 行為編程

    摘要:原文鏈接本文內容包含以下章節本書英文版這個章節主要討論了在游戲中經常用到的一些基礎的人工智能算法。行為樹是把的圖轉變成為一顆樹結構。根據當前游戲的環境狀態得到某一個行為的效用值。 作者:蘇博覽商業轉載請聯系騰訊WeTest獲得授權,非商業轉載請注明出處。原文鏈接:https://wetest.qq.com/lab/view/427.html 本文內容包含以下章節: Chapter 2 ...

    xinhaip 評論0 收藏0
  • <jdk7學習筆記>讀書筆記-并行api

    摘要:然而,這兩個方法都只是讀取對象狀態,如果只是讀取操作,就可以允許線程并行,這樣讀取效率將會提高。分配線程執行子任務執行子任務獲得子任務進行完成的結果 Lock Lock接口主要操作類是ReentrantLock,可以起到synchronized的作用,另外也提供額外的功能。用Lock重寫上一篇中的死鎖例子 import java.util.concurrent.locks.Lock; ...

    bovenson 評論0 收藏0
  • JAVA學習筆記036-第一個簡單的Mybatis程序(代碼經驗證)

    摘要:目標創建一個簡單的框架的程序,實現對數據庫的讀取操作。的核心配置文件核心配置文件,配置數據庫連接信息事物等每一個都需要在核心配置文件中注冊工具類獲取第一步獲取對象既然有了,顧名思義,我們可以從中獲得的實例。 ...

    itvincent 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<