call 和apply 区别是什么 ? 哪个性能更好一些?实现

2020-03-28  本文已影响0人  lessonSam

call和 apply 的区别?哪个性能更好一点?
// 通过 call和applu 抛出 原型 性能 测试 掌握 面试节奏
答:

// fn.call(this, 10, 20, 30);
// fn.apply(this, [10, 20, 30]);
// fn.bind(this, 10, 20, 30)();

自己实现性能测试,结果仅供参考,因为任何的代码测试,都是和测试的环境有关系的 比如 cpu内存 gpu 等电脑当前性能 ,以及不同的浏览器等等*/

// -同步;
// console.time('a');
// //...执行的代码

// console.timeEnd('a');

实现 (5).add(3).minus(2)使其输出结果为6

// 考察范围 类和实例 以及在原型上构建方法,并且能够实现链式调用
// 每次函数 调用都要返回一个NUMBER类 的实例 也叫链式写法

(function() {
  // 容错处理
  function check(n) {
    n = Number(n);
    // 如果结果为true 说明是非有效数字
    return isNaN(n) ? 0 : n;
  }
  function add(n) {
    n = check(n);
    return this + n;
  }
  function minus(n) {
    return this - n;
  }
  //  jq 作者的做法 就是添加多个原型方法的时候的偷懒写法
  // ['add', 'minus'].forEach((item, index) => {
  //   Number.prototype[item] = eval(item);
  // });

  // 等同于
  Number.prototype.add = add;
  Number.prototype.minus = minus;
})();
// 等同于
~(function() {})();
上一篇 下一篇

猜你喜欢

热点阅读