JavaScript常用实用方法封装

常用的js方法封装(27个) 1.输入一个值,返回其数据类型 function type (para) { return Object.prototype.toString.call(para) } 2. 数组去重 // 方法一 function unique1(arr) { return [...new Set(arr)] } // 方法二 function unique2(arr) { var obj = {}; return arr.filter(ele => { if (!obj 阅读详情

对一个数组指定个数拆分成几个数组

function group(array, subGroupLength) {
  let index = 0;
  let newArray = [];
  while(index < array.length) {
    newArray.push(array.slice(index, index += subGroupLength));
  }
  return newArray;
}

指定范围内的随机整数

function random(minimum, maximum) {
  var number = Math.floor(minimum + Math.random() * (maximum - minimum));
  return number;
}

数字转汉字

function convertToChinaNum(num) {
    var arr1 = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
    var arr2 = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千','万', '十', '百', '千','亿'];//可继续追加更高位转换值
    if(!num || isNaN(num)){
        return "零";
    }
    var english = num.toString().split("")
    var result = "";
    for (var i = 0; i < english.length; i++) {
        var des_i = english.length - 1 - i;//倒序排列设值
        result = arr2[i] + result;
        var arr1_index = english[des_i];
        result = arr1[arr1_index] + result;
    }
    //将[零千、零百]换成[零] [十零]换成[十]
    result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十');
    //合并中间多个零为一个零
    result = result.replace(/零+/g, '零');
    //将[零亿]换成[亿][零万]换成[万]
    result = result.replace(/零亿/g, '亿').replace(/零万/g, '万');
    //将[亿万]换成[亿]
    result = result.replace(/亿万/g, '亿');
    //移除末尾的零
    result = result.replace(/零+$/, '')
    //将[零一十]换成[零十]
    //result = result.replace(/零一十/g, '零十');//正规读法是零一十
    //将[一十]换成[十]
    result = result.replace(/^一十/g, '十');
    return result;
}

判断对象数组中是否有该对象,有则替换无则添加

function formateArrObjData(initialArr, obj, pro) {
   // 判定数据是否为数组
   if (!(initialArr instanceof Array)) {
       return []; //'请传入正确格式的数组'
   }
   // 判定数据是否为对象
   if (!(obj instanceof Object)) {
       return []; //'请传入正确格式的对象'
   }
   if (!pro) {
       return []; //'请传入正确格式的属性名'(用于判断的key值)
   }

   let index = initialArr.findIndex((val) => val[pro] === obj[pro]);
   let tempArr = initialArr;
   // 如果有就替换  没有就添加
   if (initialArr.findIndex((val) => val[pro] === obj[pro]) !== -1) {
       tempArr.splice(index, 1, obj);
   } else {
       tempArr.push(obj);
   }
   return tempArr;
},

新数组和老数组合并,修改过数据就替换,新的数据就添加

function dataReplace(newArr, arr) {
  let resSet = new Set(arr.map((item) => item.cellLocation)); // 转成 set
  // 转换成 map
  let editAllMap = new Map(newArr.map((item) => [item.cellLocation, item]));
  let arry = arr
      .map((item) => {
          // 实现覆盖
          // 找到原来的数组
          if (editAllMap.has(item.cellLocation)) {
              return { ...item, ...editAllMap.get(item.cellLocation) }; // 覆盖
          }
          return { ...item };
      })
      .concat(
          // 拼接多的部分,即没覆盖的部分
          ...newArr.filter((item) => !resSet.has(item.cellLocation)),
      );
  for (var i = 0; i < arry.length - 1; i++) {
      for (var j = i + 1; j < arry.length; j++) {
          if (arry[i].cellLocation == arry[j].cellLocation) {
              arry.splice(j, 1);
              // splice删除了一个元素,下标要减一,否则循环会漏掉一个元素(多个相邻的元素 可能会漏掉删除元素)
              j--;
          }
      }
  }
  return arry;
}


function dataReplace2(target, source) {
        target.forEach((item) => {
          source.find((i) => {
            if (item.id === i.id) {
              for (const key in i) {
                if (key != "id") {
                  item[key] = i[key];
                }
              }
              item.name = i.name;
              i.replace = true;
            }
          });
        });
        return [...target, ...source.filter((item) => !item.replace)];
      }

数据对象中children为[],则删除children键

function deleteChildren(arr) {
    let childs = arr;
    for (let i = childs.length; i--; i > 0) {
        if (childs[i].children) {
            if (childs[i].children.length) {
                deleteChildren(childs[i].children);
            } else {
                delete childs[i].children;
            }
        }
    }
    return arr;
}

数组对象根据自定义的key比对,相同值相加去重

// delSameObjValue 数组对象相同值相加去重
    // arr 需要处理的数组
    // resultNum 最终计算结果的键名
    // keyName 用于计算判断的键名
    // keyValue 用于计算结果的键名 --> 对应的键值为number类型
    function delSameObjValue(arr, resultNum, keyName, keyValue) {
      const warp = new Map();
      arr.forEach((item) => {
        let str = keyName.map((v) => item[v]).join("_");
        item[resultNum] = keyValue.reduce((p, c) => {
          return (p += item[c]);
        }, 0);
        warp.has(str)
          ? (warp.get(str)[resultNum] += item[resultNum])
          : warp.set(str, item);
      });
      return Array.from(warp).map(([, v]) => v);
    }

获取URL上面的参数

function getUrlParam(sUrl, sKey) {
    var result = {};
    sUrl.replace(/(\w+)=(\w+)(?=[&|#])/g, function (ele, key, val) {
        if (!result[key]) {
            result[key] = val;
        } else {
            var temp = result[key];
            result[key] = [].concat(temp, val);
        }
    })
    if (!sKey) {
        return result;
    } else {
        return result[sKey] || '';
    }
}

多个异步按顺序执行

  	let taskList = [];
    let task;
    function mockTask(count) {
      // 创建多个异步函数
      for (let i = 0; i < count; i++) {
        let fn = () => {
          let time = parseInt(Math.random() * 1000);
          setTimeout(() => {
            console.log(`队列${i + 1}: 耗时${time}ms`);
            task.next();
          }, time);
        };
        taskList.push(fn);
      }
      function* main() {
        for (const iterator of taskList) {
          yield iterator();
        }
      }
      task = main();
      task.next();
    }
    mockTask(10);

时间格式转换

<html>
	<head>
		<meta charset="UTF-8">
		<title>日期</title>
	</head>
	<body>
		<div id="pDate"></div>
	</body>
</html>
<script type="text/javascript">
	var sWeek = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
	var dNow = new Date();
	var CalendarData = new Array(100);
	var madd = new Array(12);
	var tgString = "甲乙丙丁戊己庚辛壬癸";
	var dzString = "子丑寅卯辰巳午未申酉戌亥";
	var numString = "一二三四五六七八九十";
	var monString = "正二三四五六七八九十冬腊";
	var sx = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
	var cYear, cMonth, cDay, TheDate;
	CalendarData = new Array(0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x415B5, 0x2B6, 0x957, 0x2092F, 0x497, 0x60C96, 0xD4A, 0xEA5, 0x50DA9, 0x5AD, 0x2B6, 0x3126E, 0x92E, 0x7192D, 0xC95, 0xD4A, 0x61B4A, 0xB55, 0x56A, 0x4155B, 0x25D, 0x92D, 0x2192B, 0xA95, 0x71695, 0x6CA, 0xB55, 0x50AB5, 0x4DA, 0xA5B, 0x30A57, 0x52B, 0x8152A, 0xE95, 0x6AA, 0x615AA, 0xAB5, 0x4B6, 0x414AE, 0xA57, 0x526, 0x31D26, 0xD95, 0x70B55, 0x56A, 0x96D, 0x5095D, 0x4AD, 0xA4D, 0x41A4D, 0xD25, 0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B, 0x49B, 0x41497, 0xA4B, 0xA164B, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, 0x5092F, 0x497, 0x64B, 0x30D4A, 0xEA5, 0x80D65, 0x5AC, 0xAB6, 0x5126D, 0x92E, 0xC96, 0x41A95, 0xD4A, 0xDA5, 0x20B55, 0x56A, 0x7155B, 0x25D, 0x92D, 0x5192B, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93, 0x40E95);
	madd[0] = 0;
	madd[1] = 31;
	madd[2] = 59;
	madd[3] = 90;
	madd[4] = 120;
	madd[5] = 151;
	madd[6] = 181;
	madd[7] = 212;
	madd[8] = 243;
	madd[9] = 273;
	madd[10] = 304;
	madd[11] = 334;

	function GetBit(m, n) {
		return(m >> n) & 1;
	}

	function e2c() {
		TheDate = (arguments.length != 3) ? new Date() : new Date(arguments[0], arguments[1], arguments[2]);
		var total, m, n, k;
		var isEnd = false;
		var tmp = TheDate.getFullYear();
		total = (tmp - 1921) * 365 + Math.floor((tmp - 1921) / 4) + madd[TheDate.getMonth()] + TheDate.getDate() - 38;
		if(TheDate.getYear() % 4 == 0 && TheDate.getMonth() > 1) {
			total++;
		}
		for(m = 0;; m++) {
			k = (CalendarData[m] < 0xfff) ? 11 : 12;
			for(n = k; n >= 0; n--) {
				if(total <= 29 + GetBit(CalendarData[m], n)) {
					isEnd = true;
					break;
				}
				total = total - 29 - GetBit(CalendarData[m], n);
			}
			if(isEnd) break;
		}
		cYear = 1921 + m;
		cMonth = k - n + 1;
		cDay = total;
		if(k == 12) {
			if(cMonth == Math.floor(CalendarData[m] / 0x10000) + 1) {
				cMonth = 1 - cMonth;
			}
			if(cMonth > Math.floor(CalendarData[m] / 0x10000) + 1) {
				cMonth--;
			}
		}
	}

	/*戊戌狗年 腊月廿*/
	function GetcDateString() {
		var tmp = "";
		tmp += tgString.charAt((cYear - 4) % 10);
		tmp += dzString.charAt((cYear - 4) % 12);
		tmp += sx.charAt((cYear - 4) % 12);
		tmp += "年 农历";
		if(cMonth < 1) {
			tmp += "(闰)";
			tmp += monString.charAt(-cMonth - 1);
		} else {
			tmp += monString.charAt(cMonth - 1);
		}
		tmp += "月";
        // console.log();
		tmp += (cDay < 11) ? "初" : ((cDay < 20) ? "十" : ((cDay < 30) ? "廿" : "三十"));
        // console.log(tmp);
		if(cDay % 10 != 0 || cDay == 10) {
			tmp += numString.charAt((cDay - 1) % 10);
		}
        // console.log(tmp);
		return tmp;
	}

	function GetLunarDay(solarYear, solarMonth, solarDay) {
		if(solarYear < 1921) {
			return "";
		} else {
			solarMonth = (parseInt(solarMonth) > 0) ? (solarMonth - 1) : 11;
			e2c(solarYear, solarMonth, solarDay);
			return GetcDateString();
			
		}
	}
	

	function getFullYear(d) { // 修正firefox下year错误
		yr = d.getYear();
		if(yr < 1000) yr += 1900;
		return yr;
	}

/*写入页面*/
	function showDate() {
		
		var D = new Date();
		var yy = D.getFullYear();
		var mm = D.getMonth() + 1;
		var dd = D.getDate();
		var ww = D.getDay();
		var ss = parseInt(D.getTime() / 1000);
		var h = D.getHours();
		var m = D.getMinutes();
		var s = D.getSeconds();
		
		var sValue = getFullYear(dNow) + "年" + (dNow.getMonth() + 1) + "月" + dNow.getDate() + "日" + " " + sWeek[dNow.getDay()] + " ";
		sValue += GetLunarDay(yy, mm, dd);
		sValue += shapetime(h,m,s);
		document.getElementById("pDate").innerHTML = sValue;
		setTimeout("showDate()", 500);
	};

/*格式化时间*/
	function shapetime(h, m, s) {
		if(s <= 9) s = "0" + s;
		if(m <= 9) m = "0" + m;
		if(h <= 9) h = "0" + h;
		return h + ":" + m + ":" + s
	}

	window.onload = showDate;
</script>

输入一个值,返回其数据类型

/**
 * 输入一个值,返回其数据类型
 * @param {*} para
 * @returns
 */
function returnDataType(para) {
  return Object.prototype.toString.call(para).slice(8, -1);
}

计算数的阶乘

/**
 *  计算数的阶乘
 * @param {*} num
 * @returns
 */
function factorial(num) {
  if (num < 0) return -1;
  return num === 1 ? 1 : num * factorial(--num);
}

两数之间累乘

/**
 *  两数之间累乘
 * @param {*} x
 * @param {*} y
 * @returns
 */
function multiplicative(x, y) {
  let count;
  if (x < y) {
    count = x;
    for (let i = x + 1; i <= y; i++) {
      count *= i;
    }
    return count;
  } else {
    count = y;
    for (let i = y + 1; i <= x; i++) {
      count *= i;
    }
    return count;
  }
}

计算函数执行所用时间

/**
 * 计算函数执行所用时间 带参数
 * @param {*} fn
 * @returns
 */
function computeTime(fn) {
  let startTime = new Date().getTime();
  let p = [];
  for (let i = 1; i < arguments.length; i++) {
    p.push(arguments[i]);
  }
  fn.apply(null, p);
  let endTime = new Date().getTime();
  let Time = endTime - startTime;
  return Time;
}

数字超过99显示99+

/**
 * 数字超过99显示99+
 * @param { Number } num
 * @param { String } str 后缀可自定义
 * @returns
 */
function numFilter(num, str = "+") {
  if (Object.prototype.toString.call(str).slice(8, -1) !== "String") {
    console.warn("第二参数为最好为字符串类型!");
  }
  num = num ? num - 0 : 0;
  if (num > 99) {
    return "99" + str;
  } else {
    return num;
  }
}

统计相同name出现的次数(num)和其他字段的规定的次数

/**
 * 统计相同name出现的次数(num)和其他字段的规定的次数
 * @param {Array} array
 */
function jisuan(array) {
  let newArray = [];
  let nameList = array.map((item) => {
    return item.name;
  });
  let numList = nameList.reduce(function (a, b) {
    a[b] = a[b] + 1 || 1;
    return a;
  }, {});
  for (const key in numList) {
    if (Object.hasOwnProperty.call(numList, key)) {
      let leng = 0;
      let aa = array.filter((e) => e.name == key);
      aa.forEach((res) => {
        if (res.已完成 == 1) {
          leng += 1;
        }
      });
      newArray.push({
        name: key,
        num: numList[key],
        已完成: leng,
      });
    }
  }
  return newArray;
}
js的常用封装函数库之Date操作 js的常用封装函数库之Date日期的操作 /* * 函数功能:Date */ class DateFn { /** * 格式化时间 * * @param {time} 时间 * @param {cFormat} 格式 * @return {String} 字符串 * * @example formatTime('2... 阅读详情

相关推荐

JavaScript的最新常用方法封装

1. type 类型判断 isString(o){//是否字符串 returnObject.prototype.toString.call(o).slice(8,-1)==='String' } isNumber(o){//是否数字 returnObject.prototype.toString.call(o).slice(8,-1)==='Num...

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 467

JavaScript 之封装方法(10种)

一些常用的javascript方法,希望可以帮到大家 1、输入一个值,返回其数据类型 function type(para) { return Object.prototype.toString.call(para) } 2、数组去重 function unique1(arr) { return [...new Set(arr)] } function unique2(arr) { var obj = {}; return arr.filter(ele => {

weixin_48053972的博客 3702

前端常用 JavaScript 方法封装

目录1. 输入一个值,返回其数据类型**2. 数组去重3. 字符串去重4. 深拷贝 浅拷贝5. reverse底层原理和扩展6. 圣杯模式的继承7. 找出字符串中第一次只出现一次的字母8. 找元素的第 n 级父元素9. 返回元素的第n个兄弟节点10. 封装mychildren,解决浏览器的兼容问题11. 判断元素有没有子元素12. 一个元素插入到另一个元素的后面13. 返回当前的时间(年月日时分秒)14. 获得滚动条的滚动距离15. 获得视口的尺寸16. 获取任一元素的任意属性17. 绑定事件的兼容代码1.

←か淡定☆ ヾ 的博客 592

JavaScript方法封装的实现方法

在这个例子中,我们使用一个对象来表示一个矩形,这个对象包含了矩形的宽度和高度属性,并将计算矩形面积和周长的代码块放入这个对象中。面积和周长函数都可以通过this关键字访问矩形的宽度和高度属性,这样我们就可以通过这个对象计算矩形的面积和周长,而不需要重复写计算矩形面积和周长的代码块。方法封装允许开发人员将代码分解为小而独立的模块,从而使代码的复杂性降低,提高代码的可读性和可维护性。在这个例子中,我们使用一个类来表示一个矩形,这个类包含了矩形的宽度和高度属性,并将计算矩形面积和周长的方法定义为类的属性。

我点评的博客 631

JavaScript常用工具方法封装

因为工作中经常用到这些方法,所有便把这些方法进行了总结。 JavaScript 1. type 类型判断 isString (o) { //是否字符串 return Object.prototype.toString.call(o).slice(8, -1) === 'String' } isNumber (o) { //是否数字 return Object.prototype.toString.call(o).slice(8, -1) === 'Number' } isBoolean (o) { //是否boolean return Object.prototype.toStr

AMD显卡跑Ollama大模型?手把手教你搞定Windows下GPU识别与加速(以RX 9600XT为例)

本文详细指导如何在Windows系统下使用AMD显卡(如RX 9600XT)运行Ollama大模型,解决GPU识别与加速问题。通过获取非官方Ollama版本、替换ROCm库文件等步骤,实现高效的GPU加速推理,提升大语言模型的运行效率。

weixin_28707365的博客 480

常用的前端JavaScript方法封装

1、输入一个值,返回其数据类型 function type(para) { return Object.prototype.toString.call(para) } 复制代码 2、数组去重 function unique1(arr) { return [...new Set(arr)] } function unique2(arr) { var obj = {}; return arr.filter(ele => { if (!obj[ele])

开源世界 1108

瑞萨RA6M4平台I2C驱动移植实战:MPU6050传感器集成指南

本文详细介绍了在瑞萨RA6M4平台上进行I2C驱动移植并集成MPU6050传感器的实战指南。通过FSP配置工具添加I2C主栈,适配MPU6050官方驱动,实现传感器数据读取与调试,为嵌入式开发提供完整的解决方案。

banana的博客 109

33个前端常用的JavaScript函数封装方法

加入我们一起学习,天天进步这是我在实际开发中常用的一些js函数方法,总结一下,以后可以,有需要的小伙伴可以参考下百度就完事了,不不不!我亲自实践过好真的多次,百度一次还好,记不住一次碰着了还得找性娘干净是拉低工作效率。constloadRes=function(name,type,fn){//加载js||css||styleletrefif(type===‘js’){//外部jsref=document.createElement(‘script’)

2501_90358693的博客 799

Tlsr8258开发-程序烧写

开源一小步,进步一大步

自学嵌入式 1774

java写一个多人线上聊天室

课程作业谔谔

weixin_51614848的博客 1136

js的常用封装函数库之设置、获取和检测cookie

js的常用封装函数库之设置、获取和检测cookie /* * 函数功能:设置cookie * cname: cookie的名字 * cvalue: cookie的值 * exdays: cookie过期的天数 * 将访问者的名字存储在 cookie 变量中 */ function setCookie(cname, cvalue, exdays) { var d = new Date();...

浮生离梦的博客 298

DCM4CHEE Archive Light 应用配置-存储配置

本文介绍了在DICOM归档系统中配置和管理存储的方法,包括通过用户界面和LDAP导入两种方式。主要内容包括: 存储配置概述:用户可根据需求配置单个或多个存储设备,支持在磁盘空间不足或多任务并行时使用。存储分为Archive设备级(序列元数据存储)和Application Entity级(对象存储/元数据存储)。 用户界面操作: 设备级存储配置:通过菜单导航添加/编辑存储描述符,设置Storage ID、URI等关键参数 应用级存储引用:在设备扩展和网络AE中分别配置元数据和对象存储引用 LDAP配置方法:

洪城叮当的博客 1416

vue3中封装常用的方法

vue3中封装常用的方法

weixin_64310738的博客 2329

手把手教你用vLLM在昇腾910B上部署Qwen3-Embedding-8B模型(保姆级避坑指南)

本文详细介绍了如何在昇腾910B芯片上使用vLLM推理引擎部署Qwen3-Embedding-8B模型的全流程,包括环境准备、vLLM-ascend定制化安装、模型获取与校验、环境变量配置、服务启动参数优化、性能压测及生产级部署建议。特别针对昇腾生态的开发者,提供了保姆级的避坑指南和实用技巧,帮助实现高效稳定的模型部署。

weixin_28726671的博客 463

PCL 最小生成树用于法向量定向【2025最新版】

PCL 最小代价生成树用于点云法向量的定向。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2067

封装一个常用的js工具类

/** * @author:水痕 * @timer:2016-07-28 * @email:332904234@qq.com * @version:1.0 * @title:封装一个自己常用的工具类js * @note: */ ; (function(window, document, $) { window.utils = { ////////////

水痕 1万+

AI上推荐 之 隐语义模型(LFM)和矩阵分解(MF)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 1万+

一些封装好的常用JavaScript方法(下)

封装一些常用JavaScript方法(下) 上篇在这里:一些封装好的常用JavaScript方法(上) 封装原生js的 Ajax function ajax(method, url, callback, data, flag) { var xhr; flag = flag || true; method = method.toUpperCase(); if (window.XMLHttpRequest) { xhr = new XMLHttpRequest

weixin_47340917的博客 205

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

常用JavaScript方法封装

49个常用JavaScript方法封装 作者:小蘑菇 https://segmentfault.com/a/1190000039220666 1、输入一个值,返回其数据类型** function type(para) { return Object.prototype.toString.call(para) } 2、数组去重 function unique1(arr) { return [...new Set(arr)] } function unique2(arr) { va

hkw20的博客 469

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JS一些功能封装

Vue项目中一些功能封装 src/utils/index.js // 返回context父实例componentName const findUpwardComponent = (context, componentName) => { let parent = context.$parent let name = parent.$options.name while (pare...

陈坚泓的博客 4184

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【前端学习笔记】JavaScript 常用方法兼容性封装

获取样式函数封装 function getStyle(ele,attr){ if(ele.currentStyle){ return ele.currentStyle[attr]; } else{ return window.getComputedStyle(ele,null)[attr]; } }; getClass()封装 functi...

weixin_30770495的博客 99

【JS实用技巧篇】03-封装思想

带领初学者了解封装思想

Q_3603的博客 622

常用的前端JavaScript方法封装,字节跳动大神讲座

11、判断元素有没有子元素i < len;i++) {12、我一个元素插入到另一个元素的后面} else {13、返回当前的时间(年月日时分秒)return i;return “” + year + “年” + month + “月” + day + “日” + hour + “时” + minute + “分” + second + “秒”14、获得滚动条的滚动距离return {

2401_83739821的博客 912

【JS】原生JS封装各种常用方法、浏览器兼容方法

原生JS封装各种常用方法、浏览器兼容方法1、继承 inherit需求知识点实现测试2、更为精确的 typeof实现3、数组去重需求实现测试4、手写 children 方法(兼容IE)知识点:实现5、查找第一个、最后一个、前一个或后一个兄弟元素(兼容IE)思路知识点实现五、手写 DOM 元素的 inserAfter 方法(兼容IE)思路知识点实现六、求屏幕滚动距离(兼容IE)实现七、求屏幕可视区域宽...

苍狼的博客 1558
上一篇: 手写Vue2核心原理(二)
下一篇: canvas实现手写签名签字(可直接导出保存)
龟中的程序员
博客等级 码龄7年 328粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龟中的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值