Object.assign、constructor、map 和 forEach、for...of、indexOf
Object.assign、constructor、map 和 forEach、for...of、indexOf
Object.assign的理解
作用:Object.assign可以实现对象的合并。
语法:Object.assign(target, ...sources)
- 会将source中的可枚举属性复制到target,如果和target的已有属性重名,则会覆盖。
- 后面的source会覆盖前面的source的同名属性。
- Object.assign复制的是属性值,如果属性值是一个引用类型,name复制的其实是引用地址,会存在引用共享的问题。
constructor的理解
创建的每个函数都有一个prototype(原型)对象,这个属性是一个指针,指向一个对象。
默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性是一个指向prototype属性所在函数的指针。
当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(继承自构造函数的prototype),指向构造函数的原型对象。
注意当将构造函数的prototype设置为等于一个以对象字面量形式创建的新对象时,constructor属性不再指向该构造函数。
map 和 forEach 的区别
相同点:
- 都是循环数组中的每一项
- 每次执行匿名函数都支持三个参数,分别为item(每一项),index(索引值),arr(原数组)
- 匿名函数中的this都是指向window
- 都只能遍历数组
不同点:
- map会分配内存空间存储新数组并返回。forEach不会返回数据。
- forEach允许callback更改原始数组的元素。map返回新的数组。
for of 可以遍历哪些对象?
for...of是ES6新增的遍历方法,但只限于迭代器(iterator)
所以普通的对象用for...of遍历是会报错的。
可迭代对象包括:Array、Map、Set、String、TypedArray、arguments对象等等。
indexOf
语法:str.indexOf(searchValue[, fromIndex])
参数:
- searchValue
- 要被查找的字符串值。
- 如果没有提供,searchValue会被强制设置为"undefined",然后在当前字符串中查找这个值。
- fromIndex(可选)
- 数字表示开始查找的位置。可以是任意整数,默认值为0。
- 如果fromIndex的值小于0,或者大于str.length,那么查找分别从0和str.length开始。
返回值:
- 查找的字符串searchValue的第一次出现的索引,如果没有找到,则返回-1。
- 若被查找的字符串searchValue是一个空字符串,则返回fromIndex。
- 如果fromIndex的值为空或者fromIndex的值小于被查找字符串的长度,将会直接返回字符串的长度。
- 如果fromIndex值大于等于字符串的长度,将会直接返回字符串的长度(str.length)
标签:
JavaScript