对象

new操作符的实现原理

new操作符的执行过程:
(1)首先创建了一个新的空对象
(2)设置原型,将对象的原型设置为函数的 prototype 对象。
(3)让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性)
(4)判断函数的返回值类型,如果是值类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象

  1. function objectFactory() {
  2. let newObject = null;
  3. let constructor = Array.prototype.shift.call(arguments);
  4. let result = null;
  5. // 判断参数是否是一个函数
  6. if (typeof constructor !== "function") {
  7. console.error("type error");
  8. return;
  9. }
  10. // 新建一个空对象,对象的原型为构造函数的 prototype 对象
  11. newObject = Object.create(constructor.prototype);
  12. // 将 this 指向新建对象,并执行函数
  13. result = constructor.apply(newObject, arguments);
  14. // 判断返回对象
  15. let flag = result && (typeof result === "object" || typeof result === "function");
  16. // 判断返回结果
  17. return flag ? result : newObject;
  18. }
  19. // 使用方法
  20. objectFactory(构造函数, 初始化参数);

内置对象

数组

数组有哪些原生方法

  • 数组和字符串的转换方法:toString()、toLocalString()、join() 其中 join() 方法可以指定转换为字符串时的分隔符。
  • 数组尾部操作的方法 pop() 和 push(),push 方法可以传入多个参数。
  • 数组首部操作的方法 shift() 和 unshift() 重排序的方法 reverse() 和 sort(),sort() 方法可以传入一个函数来进行比较,传入前后两个值,如果返回值为正数,则交换两个参数的位置。
  • 数组连接的方法 concat() ,返回的是拼接好的数组,不影响原数组。
  • 数组截取办法 slice(),用于截取数组中的一部分返回,不影响原数组。
  • 数组插入方法 splice(),影响原数组查找特定项的索引的方法,indexOf() 和 lastIndexOf() 迭代方法 every()、some()、filter()、map() 和 forEach() 方法
  • 数组归并方法 reduce() 和 reduceRight() 方法