slogeor/knife

JavaScript 系列

slogeor opened this issue · 2 comments

记录 JavaScript 相关的知识点

new Promise(function (resolve) {
  console.log('1');
  resolve();
}).then(function () {
  console.log('2')
})

const p = Promise.resolve();

setTimeout(() => {
  console.log('3');
}, 0);

(async () => {
  await p;
  console.log('4');
})();


p.then(() => console.log('5'))
  .then(() => console.log('6'));

考察知识点

宏任务、微任务、事件循环

结果

1 2 4 5 6 3

Array.prototype.slice.call

  • 功能:能将具有length 属性的对象转成数组
  • 知识点拆解:slice、call

slice

arr.slice([begin[, end]])

slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变

call

fun.call(thisArg, arg1, arg2, ...)

call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数

apply

func.apply(thisArg, [argsArray])

apply()方法调用一个具有给定 this 值的函数,以及作为一个数组(或类似数组对象)提供的参数

var arguments = {
  // length 属性最重要
  length: 3,
  0: 'JavaScript',
  1: 'HTML',
  2: 'CSS',
};

var arguments1 = {
  0: 'JavaScript',
  1: 'HTML',
  2: 'CSS',
};

Array.prototype.slice.call(arguments);
// [ 'JavaScript', 'HTML', 'CSS' ]

Array.prototype.slice.call(arguments, 1);
// [ 'HTML', 'CSS' ]

Array.prototype.slice.call(arguments1);
// []