call 和apply 区别是什么 ? 哪个性能更好一些?实现 (5).add(3).minus(2)使其输出结果为6

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

  • 共性 :都是Function 原型上的方法,每一个函数 作为Function 的实例都可以调用这两个方法,而这两个方法都是用来让函数执行并且改变函数中this 指向的,

  • 异性: call 传参是一个个传递 而apply 把所有需要传递的参数以数组的形式保存起来

  • 拓展 bind ,并没有立即执行,而是预先把函数中的this 做了处理

  • 哪个性能更好

    • 当指定this 的时候在三个以及三个以内的参数 两种方法差不多 ,当超出三个的时候call 性能要好一点
      // jq 的作者也提过这个概念 所以后期开发的时候可以使用call多一点
      那么什么时候使用apply呢?
      我想把数组中的每一项都传过去的时候
      fn.apply(this,arr)
      或者 fn.call(this,...arr)
// 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() {})();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PNG 有PNG8和truecolor PNG PNG8类似GIF颜色上限为256,文件小,支持alpha透明度,...
    hudaren阅读 1,606评论 0 0
  • 第一章 错误处理: 错误: 程序运行过程中,导致程序无法正常执行的现象(即bug) 现象: 程序一旦出错,默认会报...
    fastwe阅读 1,151评论 0 1
  • 一、JavaScript基础知识回顾 1.1 JavaScript 1.1.1 javascript是什么? Ja...
    福尔摩鸡阅读 1,343评论 0 7
  • @转自GitHub 介绍js的基本数据类型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou阅读 1,209评论 0 0
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,611评论 0 7