javascript中call的用法总结

1.使用call方法调用函数并且指定上下文的’this’

function greet(){console.log(this.name+",age="+this.age)
}greet.call({name:'lihh',age:24});//输出:lihh,age=24

可以看出greet.call中的{name:‘lihh’,age:24}就是greet()中的this

2.使用call方法调用匿名函数

下边是来自MDN的一个例子

var animals = [{species: 'Lion', name: 'King'},{species: 'Whale', name: 'Fail'}
];for (var i = 0; i < animals.length; i++) {(function (i) { this.print = function () { console.log('#' + i  + ' ' + this.species + ': ' + this.name); } this.print();}).call(animals[i], i);
}

运行结果为#0 Lion: King
#1 Whale: Fail

可以看出的是:a.第一个animals[i] 替代了this,第二个i则是传递进去了参数

3.使用call方法调用父构造函数

MDN上的例子有点没看懂,所以改造了一下,在Food中打印一下this,看看要替代的到底是什么

function Product(name, price) {this.name = name;this.price = price;if (price < 0) {throw RangeError('Cannot create product ' + this.name + ' with a negative price');}
}function Food(name, price) {console.log('---');console.log(this);console.log('---');//Product.call(this, name, price);this.category = 'food';
}

然后new Food(‘青椒’,9),结构如下
//—
// Food(){}
// category:“food”
// proto:Object
//—
有点蒙,我的理解是Product.call(this, name, price);这句代码中的this是function Food(name, price) {},用此来替换Product中this的指向,name和price则用来给Product传递参数

4.总结以上三点,借鉴MDN的说明:

  • call的用法为func.call(thisArg,args…),thisArg用来替代func中的this指向,args则是给func设置参数
  • 3的做法似乎是一种喧宾夺主的做法,把Product中this改为Food的指向,从而达到子类继承父类的做法

javascript中call的用法总结相关推荐

  1. javascript 中 console 的用法

    javascript 中 console 的用法 视频 https://www.bilibili.com/video/BV1g7411L751?from=search&seid=1567656 ...

  2. JavaScript中window.open用法实例详解

    本文较为详细的分析了JavaScript中window.open用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <script LANGUAGE="javascript& ...

  3. javascript 中this 的用法:

    javascript 中this 的用法: 1.<div οnclick="// 可以在里面使用this">division element</div> t ...

  4. 关于JavaScript中typeof的用法

    一.typeof的作用 在JavaScript中,变量未经声明就使用,系统是会报错的.但是,typeof却是js中有且仅有的一个特例. typeof的作用就是用来区分数据类型的,下面先说说typeof ...

  5. javascript 中innerHTML的用法

    javascript 中innerHTML的用法 语法 Object.innerHTML = "HTML";//设置其内容 var html = Object.innerHTML; ...

  6. JavaScript中splice的用法

    JavaScript中的splice主要用来对JS中的数组进行操作,包括删除,添加,替换等,原来的数组会被改变: 删除: array.splice(index,num),返回值为删除内容,array为 ...

  7. JavaScript中 with的用法

    文章是本人大三期间的学习笔记,一些论断取自书籍和网上博客,碍于当时的技术水平有一些写得不够好的地方,可以在评论处理智讨论~ 说起js中的with关键字,很多小伙伴们的第一印象可能就是with关键字的作 ...

  8. JavaScript中typeof的用法

    JavaScript中typeof知多少? typeof运算符介 绍: typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型. 它返回值是一个字符串,该字符串说明运算数的类型. 你 ...

  9. javascript中reduce的用法

    文章目录 一.reduce基本语法 二.reduce常用场景 1. 求和 2. 数据拼接 三.实际项目中使用示例 1. 模拟Redux中的compose方法 1.1. 简单写法 1.2 利用reduc ...

最新文章

  1. sqlalchemy数据库中的offset偏移查询的使用
  2. brave浏览器_兼容Chrome 插件的Brave浏览器,带给你更快速的上网冲浪体验
  3. 首个中文多项选择阅读理解数据集:BERT最好成绩只有68%
  4. MATLAB 图像函数(第五章) 图像空间变换和图像配准
  5. python打包exe不弹窗_Pyinstaller 打包exe教程及问题解决
  6. Office365邮局开启SPF、DKIM与DMARC
  7. 数据可视化 -- Python
  8. 利用Kubernetes搭建便携式开发环境之MySQL和Redis
  9. “赤膊贪凉”要不得 多喝蜜水防“秋燥”
  10. 数据爬取 mail_Python网络爬虫实战,数据解析!
  11. TCP Ports list (3498 ports in list)
  12. python Word批量转PDF
  13. 《Nature》论文插图的Matlab复刻第4期—单组多色柱状图(Part2-82)
  14. Linux环境安装Postgresql报错。configure: error: zlib library not found
  15. 安全攻防之BadUsb攻击之CS上线
  16. 罗永浩演讲有趣的PPT
  17. AutoSAR入门到精通讲解 (AppL) 2.1 AutoSAR-CP AppL概述
  18. 安卓手机管理_安卓手机会越用越卡?关闭这几个功能,还可以用三年
  19. 迄今见过的最好的职业规划文章
  20. 【Linux】电子词典

热门文章

  1. git克隆时出现not fount问题
  2. 怎么用python画出Excel表格数据的残差图
  3. ad导出bom表不完整_新手学AD电子设计,分四个步骤学习,不用看视频教程也能上手...
  4. [Python] 一元线性回归分析实例
  5. js字符串日期直接比较大小
  6. markdown表格内如何进行换行
  7. Altium Designer导入Allegro17.4 PCB文件
  8. 字符串算法之KMP(字符串匹配)
  9. Vue-element tab选项卡二级页面返回缓存选中页签
  10. 泛化误差深入理解计算机系统,泛化误差界指导的鉴别字典学习