JavaScript对象常用方法总结以及对象拷贝
2019-06-03 21:13
357 查看
对象常用方法
什么是对象?
对象
JavaScript 中的所有事物都是对象:字符串、数字、数组、日期、正则,等等。
在 JavaScript 中,对象是拥有属性和方法的数据。
字符串(String)
方法 | 描述 |
---|---|
charAt() | 返回在指定位置的字符。 |
charCodeAt() | 返回在指定的位置的字符的 Unicode 编码。 |
concat() | 连接字符串。 |
indexOf() | 检索字符串。 |
match() | 找到一个或多个正则表达式的匹配。 |
replace() | 替换与正则表达式匹配的子串。 |
search() | 检索与正则表达式相匹配的值。 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
split() | 把字符串分割为字符串数组。 |
toLocaleLowerCase() | 把字符串转换为小写。 |
toLocaleUpperCase() | 把字符串转换为大写。 |
toLowerCase() | 把字符串转换为小写。 |
toUpperCase() | 把字符串转换为大写。 |
substr() | 从起始索引号提取字符串中指定数目的字符。 |
substring() | 提取字符串中两个指定的索引号之间的字符。 |
数组
方法 | 描述 |
---|---|
slice[start,end) | 返回从原数组中指定开始下标到结束下标之间的项组成的新数组(不影响原数组) |
- | 1个参数:n.即:n到末尾的所有 |
- | 2个参数:[start,end] |
splice() | 删除:2个参数,起始位置,删除的项数 |
- | 插入:3个参数,起始位置,删除的项数,插入的项 |
- | 替换:任意参数,起始位置,删除的项数,插入任意数量的项 |
pop() | 删除数组的最后一个元素,减少数组的长度,返回删除的值。(无参) |
push() | 将参数加载到数组的最后,返回新数组的长度。 (参数不限) |
shift() | 删除数组的第一个元素,数组长度减1,返回删除的值。 (无参) |
unshift() | 向数组的开头添加一个或更多元素,并返回新的长度。(参数不限) |
sort() | 按指定的参数对数组进行排序 ,返回的值是经过排序之后的数组(无参/函数) |
concat() | 把两个数组拼接起来。 返回的值是一个副本 (参数不限) |
join() | 将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符 |
reduce()和reduceRight() | 缩小数组的方法,这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。 |
indexOf() | 从数组开头向后查找,接受两个参数,要查找的项(可选)和查找起点位置的索引 |
lastIndexOf() | 从数组末尾开始向前查找,接受两个参数,要查找的项(可选)和查找起点位置的索引 |
filter() | 对数组中的每一项运行给定函数,返回该函数会返回true的项组成数组。 |
forEach() | 对数组的每一项运行给定函数,这个方法没有返回值。 |
map() | 对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组。 |
some() | 对数组的每一项运行给定参数,如果该函数对任一项返回true,则返回true。以上方法都不会修改数组中的包含的值。 |
every() | 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。 |
日期(Date)
方法 | 描述 |
---|---|
ceil(x) | 尽可能取最大 。 |
floor(x) | 4000尽可能取最小。 |
round(x) | 把数四舍五入为最接近的整数。 |
max(x,y) | 返回 x 和 y 中的最高值。 |
min(x,y) | 返回 x 和 y 中的最低值。 |
pow(x,y) | 返回 x 的 y 次幂。 |
sqrt(x) | sqrt(x) 返回数的平方根。 |
random() | 返回 0 ~ 1 之间的随机数。 |
正则(Regular)
方法 | 描述 |
---|---|
compile | 编译正则表达式。 |
exec | 检索字符串中指定的值。返回找到的值,并确定其位置。 |
test | 检索字符串中指定的值。返回 true 或 false。 |
search | 检索与正则表达式相匹配的值。 |
match | 找到一个或多个正则表达式的匹配。 |
replace | 替换与正则表达式匹配的子串。 |
split | 把字符串分割为字符串数组。 |
对象拷贝
想要拷贝对象,先说一下数据类型。数据类型分为基本类型和引用类型。对于基本数据类型的拷贝,并没有深浅拷贝的区别,我们所说的
深浅拷贝都是对于引用数据类型而言的。而引用只发生在对象的身上。
浅拷贝
浅拷贝的意思就是只复制引用,而未复制真正的值。
function simpleClone(initalObj) { var obj = {}; for ( var i in initalObj) { obj[i] = initalObj[i]; } return obj; }
深拷贝
深拷贝就是对目标的完全拷贝,不像浅拷贝那样只是复制了一层引用,就连值也都复制了。
目前实现深拷贝的方法不多,主要是两种:
- 利用 JSON 对象中的 parse 和 stringify
- 利用递归来实现每一层都重新创建对象并赋值
这里只说下用递归来实现拷贝。
如果对象的属性值还是一个对象,那么上面的拷贝实现的也只是拷贝了一一层引用,所以使用递归的方式对对象里的内容追根究底,直到拷贝到对象里的数据。
//浅拷贝 var obj = {a:{b:10}}; function copy(obj){ var newobj = {}; for ( var attr in obj) { newobj[attr] = obj[attr]; } return newobj; } var obj2 = copy(obj); obj2.a.b = 20; alert(obj.a.b); //20 ,因为拷贝的是一层引用,数据可以被改变 //改成递归后 var obj = {a:{b:10}}; function deepCopy(obj){ if(typeof obj != 'object'){ return obj; } var newobj = {}; for ( var attr in obj) { newobj[attr] = deepCopy(obj[attr]); } return newobj; } var obj2 = deepCopy(obj); obj2.a.b = 20; alert(obj.a.b); //10,深层拷贝,最终拷贝到对象的数据
相关文章推荐
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- javascript中数组(Array)对象和字符串(String)对象的常用方法总结
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- 对象(Object)的常用方法以及对象拷贝
- JavaScript String 对象常用方法总结
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- JavaScript原生对象常用方法总结(推荐)
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- javascript中数组(Array)对象和字符串(String)对象的常用方法总结
- javascript 数组以及对象的深拷贝的方法
- JavaScript原生对象常用方法总结
- javaScript的内置对象以及一些常用的方法
- javascript 数组以及对象的深拷贝的方法
- JavaScript Math 对象常用方法总结
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
- javascript中数组常用方法总结
- 【JS基础回顾】String对象及其常用属性以及方法
- 进一步认识Javascript中window对象的方法和属性以及重写alert方法,控制弹出窗口,frames[]数组
- js数组对象以及数组常用属性和方法