JavaScript常用方法和封装实例分析
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了JavaScript常用方法和封装实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript常用方法和封装实例分析文章都会有所收获,下面
千家信息网最后更新 2026年11月01日JavaScript常用方法和封装实例分析
这篇文章主要介绍了JavaScript常用方法和封装实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript常用方法和封装实例分析文章都会有所收获,下面我们一起来看看吧。
1.字符串相关
1.1 format方法
在各种编程语言中,字符串的format方法是比较常见的,以下通过js扩展的方式,实现了js版本的format方法。目前貌似还没有浏览器支持这一个方法。
if(!String.prototype.format ){ String.prototype.format = function() { var e = arguments; return this.replace(/{(\d+)}/g,function(t, n) { return typeof e[n] != "undefined" ? e[n] : t; }) };}例子:
var template = "今天的天气很{0},大家一起去{1}!";alert(template.format("晴朗","郊游"));效果:

2.数组相关
1.2 forEach(callback,context) 操作数组中的每一个元素
ie9以上的浏览器,以及其他非IE浏览器都支持这一方法。
以下是兼容性的扩展写法:
/** forEach除了接受一个必须的回调函数参数,还可以接受一个可选的上下文参数(改变回调函数里面的this指向)(第2个参数)。*/if (!Array.prototype.forEach && typeof Array.prototype.forEach !== "function") { Array.prototype.forEach = function(callback, context) { // 遍历数组,在每一项上调用回调函数,这里使用原生方法验证数组。 if (Object.prototype.toString.call(this) === "[object Array]") { var i,len; //遍历该数组所有的元素 for (i = 0, len = this.length; i < len; i++) { if (typeof callback === "function" && Object.prototype.hasOwnProperty.call(this, i)) { if (callback.call(context, this[i], i, this) === false) { break; // or return; } } } } };}例子:
var drinks = ['雪碧','可乐','脉动','红牛','农夫山泉']; var context = { str1 : '【', str2 : '】'}; drinks.forEach(function(item){ console.log(this.str1 + item + this.str2);},context);效果:

这个方法在各大浏览器都得到了较好的支持。
1.3 indexOf(searchvalue,fromindex) 查询数组中某一个值的下标
ie9以上的浏览器,以及其他非IE浏览器都支持这一方法。
以下是兼容性的扩展写法:
//获取某元素在数组中第一次出现的下标if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(searchElement, fromIndex) { var k; // 1. Let O be the result of calling ToObject passing // the this value as the argument. if (this == null) { throw new TypeError('"this" is null or not defined'); } var O = Object(this); // 2. Let lenValue be the result of calling the Get // internal method of O with the argument "length". // 3. Let len be ToUint32(lenValue). var len = O.length >>> 0; // 4. If len is 0, return -1. if (len === 0) { return -1; } // 5. If argument fromIndex was passed let n be // ToInteger(fromIndex); else let n be 0. var n = +fromIndex || 0; if (Math.abs(n) === Infinity) { n = 0; } // 6. If n >= len, return -1. if (n >= len) { return -1; } // 7. If n >= 0, then Let k be n. // 8. Else, n<0, Let k be len - abs(n). // If k is less than 0, then let k be 0. k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); // 9. Repeat, while k < len while (k < len) { // a. Let Pk be ToString(k). // This is implicit for LHS operands of the in operator // b. Let kPresent be the result of calling the // HasProperty internal method of O with argument Pk. // This step can be combined with c // c. If kPresent is true, then // i. Let elementK be the result of calling the Get // internal method of O with the argument ToString(k). // ii. Let same be the result of applying the // Strict Equality Comparison Algorithm to // searchElement and elementK. // iii. If same is true, return k. if (k in O && O[k] === searchElement) { return k; } k++; } return -1; }; }例子:
var index = drinks.indexOf('雪碧');alert(index);//0类似的还有lastIndexOf,用于获取数组中某个元素最后一次出现的位置。如果数组没有这个元素,则返回-1。
该方法的实现:
//获取某元素在数组中最后一次出现的下标if (!Array.prototype.lastIndexOf) { Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) { 'use strict'; if (this === void 0 || this === null) { throw new TypeError(); } var n, k, t = Object(this), len = t.length >>> 0; if (len === 0) { return -1; } n = len - 1; if (arguments.length > 1) { n = Number(arguments[1]); if (n != n) { n = 0; } else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); } } for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) { if (k in t && t[k] === searchElement) { return k; } } return -1; };}通过这两个方法,我们可以来做一些有意思的事情了。比如,判断一个对象是否为数组?
IE9 以上的浏览器,已经支持通过Array.isArray()来验证一个对象是否为数组了。
比如:
var result = Array.isArray([]);alert(typeof []);//objectalert(result); //true
那么,如果我们自己来实现,又该如何做呢?下面给出一个简单思路,
简单模拟一下这个过程:
//首先,让我们来看一看数组的构造器是咋样的?console.log([].constructor.toString()); /* 打印出来是这样的: function Array() { [native code] }*/于是便有了
var Array = function(){ } Array.isArray = function(obj){ return obj.constructor.toString().indexOf('Array') != -1;} var result = Array.isArray([]); alert(result); //true虽然取巧了点,不过目的确实达到了。
2.数组封装
通过数组的一些基本方法,我们可以开始自己模拟一下java中的ArrayList了
代码如下:
//模拟ArrayListfunction ArrayList(){ var arr = []; //用于保存数据的数组 var length = 0; //数组的长度,默认为0 /** * 判断是否为空 */ this.isEmpty = function(){ return length == 0; } /** * 获取列表长度 */ this.size = function(){ return length; } /** * 判断对象中是否包含给定对象 */ this.contains = function(obj){ if(arr.indexOf(obj) != -1){ return true; } return false; } /** * 新增 */ this.add = function(obj){ length = length + 1; arr.push(obj); } /** * 删除 * 参数1 obj : 需要删除的元素 * 参数2 deleteAll: 是否全部删除,否则默认删除第一个匹配项 */ this.remove = function(obj,deleteAll){ var len = arr.length; for(var i = 0 ;i < len ;i++){ if(arr[i] == obj){ arr.splice(i,1); length = length - 1; if(!deleteAll){ break; } } } } /** * 根据索引获取对应的元素 */ this.get = function(index){ if(index > length - 1){ return null; } return arr[index]; } /** * 获取列表数组 */ this.toArray = function(){ return arr; } /** * 获取某一个元素的角标 * 如果只出现一次,就返回一个数字,如果大于一次,就返回数组 */ this.indexOf = function(obj){ var rstArr = []; var count = 0; for(var i = 0 ;i < length ;i++){ if(obj == arr[i]){ rstArr[count++] = i; } } if(count == 1){ return rstArr[0]; } return rstArr; } this.toString = function(){ return arr.toString(); }} //测试代码var list = new ArrayList();list.add('张三');list.add('李四');list.add('王五');list.add('赵六');list.add('王五');console.log(list.size());console.log(list.toString());console.log(list.contains('张三'));list.remove('王五',true); //null,undefined,''console.log(list.toString());console.log(list.get(0));console.log(list.get(1));console.log(list.get(2));console.log(list.size()); console.log(list.toArray());list.add('张三');list.add('张三');console.log(list.toArray());console.log(list.indexOf('张三'));console.log(list.indexOf('赵六'));运行结果:
关于"JavaScript常用方法和封装实例分析"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"JavaScript常用方法和封装实例分析"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
数组
方法
元素
浏览器
浏览
封装
参数
张三
支持
实例
实例分析
常用
分析
对象
下标
例子
函数
知识
王五
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技有限公司
互联网与科技
互联网和科技技术
涨乐互联网科技
壹账通互联网科技
无线互联网科技
太原新华互联网科技学校怎么样
玖二柒互联网科技公司待遇
全球顶尖互联网科技公司
互联网经济与金融科技
知域互联网科技有限公司大骗子
互联网科技人工智能实验室
河南住房之家互联网科技
锡山区互联网智能科技产品供应
互联网科技机房
兰石爱特工业互联网科技分公司
科技信息时代互联网发展
美国五大互联网科技公司市值多少
互联网科技大佬云集
高科技和互联网的现代国家
百单网互联网科技有限公司怎么样
合肥互联网科技公司
互联网科技的未来发展
上海亿帐通互联网科技
苏州五指互联网络科技有限
华夏互联网科技业
35岁以上互联网科技行业
互联网科技平台产品运营
湖北辰鑫科技互联网
现代科技的标志之一的互联网