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)
posted @   笔下洛璃  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示