call 和 apply 方法
1:每个函数都包含两个非继承而来的方法:call(),apply().
2:call方法和apply方法作用是一样的。
下边是call的使用例子:
1 window.color = 'red'; 2 document.color = 'yellow'; 3 var s1 = {color: 'blue'}; 4 5 function getColor (){ 6 console.log(this.color); 7 } 8 getColor.call(); //red (默认传递参数) 9 getColor.call(window);// red 10 getColor.call(document);//yellow 11 getColor.call(s1);//blue 12 getColor.call(this);//red
1 var Pet={ 2 words : '...', 3 speak : function(say){console.log(say+ ' ' + this.words);} 4 } 5 6 Pet.speak('howling'); //howling... 7 8 9 10 var Dog = {words: 'wang wang'} 11 12 Pet.speak.call(Dog, 'barking');// barking wang wang
下边是apply使用例子
1 window.number = 'one'; 2 document.number = 'two'; 3 var s2 = {number: 'three'}; 4 5 function getNum(){ console.log(this.number); } 6 7 getNum.apply(); // one 默认 8 getNum.apply(window); //one 9 getNum.apply(document);//two 10 getNum.apply(s2);//three 11 getNum.apply(this);//one
1 function Pet(words){ 2 this.words = words; 3 this.speak = function(){ console.log(this.words) } 4 } 5 6 function Dog(words){ 7 // Pet.call(this, words); 8 Pet.apply(this, arguments); 9 } 10 11 var dog = new Dog('wang wang'); 12 dog.speak();// wang wang
3:不同点是接收参数的方式不同。
function add(c,d){ return this.a + this.b + c + d;}var s = {a:1, b:2}; console.log( add.call(s,3,4) );// 1+2+3+4 =10 console.log( add.apply(s,[3,4]) ); // 1+2+3+4 =10
1 window.firstName = "tomF"; 2 window.lastName = "tomL"; 3 var myObj = {firstName:"myF", lastName:"myL"}; 4 5 function getName(){ console.log(this.firstName + this.lastName); } 6 7 function getMess(sex, age){ 8 console.log(this.firstName + this.lastName+ "性别:"+sex+"age:"+age); 9 } 10 11 getName.call(window);//tomFtomL 12 getName.call(myObj);//myFmyL 13 getName.apply(window);//tomFtomL 14 getName.apple(myObj);//myFmyL 15 16 getMess.call(window,'girl',21);//tomFtomL性别:girlage:21 17 getMess.apply(window,['girl',21]);//tomFtomL性别:girlage:21 18 getMess.call(myObj,'unknown',30);//myFmyL性别:unknownage:30 19 getMess.apply(myObj,['unknown',30]);//myFmyL性别:unknownage:30
转载于:https://www.cnblogs.com/ming-os9/p/8945901.html
call 和 apply 方法相关推荐
- JS中的call()方法和apply()方法用法总结
1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用是一样的. 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖 ...
- Angular的ChangeDetectorRef.detectChanges()实现angularJS的$apply()方法,强制刷新数据渲染
在Javascript代码里,都是按照一定顺序来执行的,当轮到一个代码片段执行的时候,浏览器就只会去执行当前的片段,不会做任何其他的事情.所以有时候一些做得不是很好的网页,当点击了某个东西之后会卡住, ...
- Angularjs $scope 里面的$apply 方法 和 $watch 方法
Angularjs $scope 里面的$apply 方法 和 $watch 方法 学习要点: 1. Angularjs $scope 里面的$apply 方法 2. Angularjs $scope ...
- Pandas中map,applymap和apply方法之间的区别
本文翻译自:Difference between map, applymap and apply methods in Pandas Can you tell me when to use these ...
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( plugins 闭包代码块中引入插件 | PluginAware#apply 方法引入插件 )
文章目录 一.Module 目录下 build.gradle 配置文件 1.plugins 闭包代码块中引入插件 2.PluginAware#apply 方法引入插件 Android Plugin D ...
- 《ES6基础教程》之 Call 方法和 Apply 方法
1 <script type="text/javascript"> 2 // Call方法: 3 // 语法:call(thisObj[,arg1,arg2,...,a ...
- Scala类的定义,主/辅构造器,以及方法中的变量定义,单例对象,伴生对象,Apply方法调用,应用程序对象
1. 类 1.1. 类的定义 package cn.toto.scala.day2/*** 在Scala中,类并不用声明为public类型的.* Scala源文件中可以包含多个类,所有这些类都具有共有 ...
- windows 改变文件大小 函数_手写 bind call apply 方法 与 实现节流防抖函数
实现 bind call apply 方法 this 是什么? this是指包含它的函数作为方法被调用时所属的对象.这句话理解起来感觉还是很拗口的,但是如果你把它拆分开来变成这三句话后就好理解一点了. ...
- js里apply方法的简单实例
代码片断 $(document).ready(function(){function apple(age,name,color) {this.name = name;this.color = colo ...
- 面试官问:能否模拟实现JS的call和apply方法
写于2018年11月30日,发布在掘金上阅读量近一万,现在发布到微信公众号申明原创.相对比较基础的知识,虽然日常开发可能用得比较少,各种源码中有很多call和apply,需要掌握. 前言 这是面试官问 ...
最新文章
- onethink不能安装到已经存在的数据库中的问题
- 西电计算机本科学费,陕西高校学费大比拼!你当年的学费现在涨了多少
- Python_基础_5
- redis 原码安装
- java类的结构:构造器 —(13)
- 安装vue-cli时报错
- 一个程序详细研究DataReader(转)
- 函数指针与回调函数详解
- 基于感知机Perceptron的鸢尾花分类实践
- QTCreator2.8.0+Qt Open source 4.8.5环境配置(Win7x64)
- SQL 查找是否存在,别再 count 了,很耗费时间的!
- MySQL主从复制的原理及配置方法(比较详细)
- Selenium-WebDriver基本使用和API--1
- 【自用】Android 切割Bitmap为多个小的Bitmap
- 中柏平板触摸驱动_要成绩也要玩乐,聊聊学生买平板那些事儿
- 204. Count Primes 1
- django初体验 学习笔记
- app渗透实战案例—Spring Boot Actuator未授权到脱库
- 直流无刷电机与永磁同步电机区别
- cesium加载entity图片缩放_Vue中使用vuecroper插件实现图片上传裁剪并传到SpringBoot后台接口...
热门文章
- 15Echarts:复杂数据展示
- 2021年幼儿园教师招聘:中班绘画活动《吹画梅花》
- proxy代理报错: Uncaught (in promise) Error: Request failed with status code 500
- iOS 解决scoryboard上tableview、collection view顶部有空白问题
- Idea的快捷功能使用统计
- 入侵必读:网警如何找到你
- vscode调试C/C++报错:the program has exited with code 42 (0x0000002a).
- echarts中如何配置图例形状、图标宽高、图标和文字间距、图例位置、文字颜色、字体大小
- 使用网卡rtk8812au以及omnipeek抓取空中包
- kingcms php 标签,MySQL_KingCMS广告标签的使用方法,KINGCMS在3.0的时候我用过,可以 - phpStudy...