this指向问题(2)
4、显示绑定
指的是apply、bind、call
(1)、apply 和 call
相同点: <1> 这两个方法的用途是在特定的作用域中调用函数,实际上等于设置函数体内 this 对象的值,真正强大之处在于扩充函数赖以运行的作用域
<2> 它们接收的第一个参数都是一样的:函数运行的作用域
function foo(b,c){
console.log(this.a,b,c);
}
var obj = { a:2,b:3}
foo.call(obj,5,6) // 2 5 6
apply接受的参数是数组或者 arguments
function foo(something){
console.log(this.a,something); // 2 3
return this.a + something
}
var obj = { a:2}
var bar =function(){
return foo.apply(obj,arguments);
}
var b = bar(3)
console.log(b) // 5
apply 还有一个作用是把数组展开
function f(x,y,z){
console.log(x,y,z); // 1,2,3
}
var a = [1,2,3]
f.apply(null,a)
这个是ES5中的写法,在 ES6 中已经抛弃了这种写法,ES6 的写法为:
function f(x,y,z){
console.log(x,y,z); // 1,2,3
}
var a = [1,2,3]
f(...a)
(2)bind
function foo(something){
console.log(this.a,something); // 2 5
return this.a + something
}
var obj = { a:2}
var bar = foo.bind(obj,5) // 这个东西是函数 foo
var b = bar(3)
console.log(b); //
5、优先级问题
new > 显示绑定 > 隐式绑定 > 默认
call、apply、bind其实不止用于指定this,还有很多的用途。在这因为是讲 this 所以就不谈那些,后续我会继续写一些 this 的机制,以及前人是怎么替代 this 机制的。嗯.....
因为刚开始写东西,所以可能有些东西表达的不是很清楚,可能有些东西看起来有点绕,如果有什么不懂得或者有问题的欢迎留言指正
this指向问题(2)的更多相关文章
- C语言中 指向函数的指针 简介
引子:在学习CPrimerPlus的第十四章的14.13节中,遇到了如下三行文字,是有关指向函数的指针的,把我搞晕了. char * fump(); //返回指向char的指针的函数 char (* ...
- JS this指向
正常模式 在正常模式下独立函数的的 this 指向 undefined 或 window. <script type="text/javascript"> functi ...
- java多态性,父类引用指向子类对象
父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog.其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类. Animal animal = new C ...
- 【javascript 技巧】谈谈setTimeout的作用域以及this的指向问题
setTimeout的用法详见:http://www.w3school.com.cn/htmldom/met_win_settimeout.asp 是的,setTimeout的常见用法是让某个方法延迟 ...
- what's this? 浅谈js中this的指向问题
刚刚学习js的朋友可能和我一样,看到代码中的this总是一脸懵逼,不知道this到底指向谁.经过一段时间的了解,我想跟大家分享下自己的理解. 何时出现this 函数在调用的时候,会自动获得两个特殊变量 ...
- EC笔记,第二部分:10.让=返回指向*this的引用
Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyF ...
- JavaScript中this指针指向的彻底理解
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 这一点与函数中自由变量Action-varibal不同 var ...
- JavaScript中this指向的简单理解
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- 12-返回指针的函数&&指向函数的指针
前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针 一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回 ...
- 彻底理解js中this的指向,不必硬背。
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
随机推荐
- jsp中判断if 和 else
<c:choose> <c:when test="${date==datetime}"> ...
- maya2017无法安装卸载激活失败
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- 数据库mysql--基础命令
客户端 一.登录和退出 1.登录 mysql -h server-ip -u usename -p 回车,然后会提示输入密码 2.退出:"quit;" | "exit;& ...
- linux_api之进程控制
本篇索引: 1.引言 2.进程标识 3.多进程 4.fork函数 5.vfork函数 6.exit函数 7.wait和waitpid函数 8.竞态 9.exec函数族 10.进程状态 11.syste ...
- linux下文件比对功能
很想对吧两个文本有什么不同,可linux下有没有那么方便的工具,怎么办?其实也很简单:diff命令,一行搞定. 新建a.txt文件
- JQuery 的跨域方法 可跨任意网站
JS的跨域问题,很多人在网上找其解决方法,教其用IFRAME去解决的文章很多,真有那么复杂吗?其实很简单的,如果你用JQUERY,一个GETJSON方法就搞定了,而且是一行代码搞定. 下面开始贴出方法 ...
- 7.vs的基本设置
1.运行代码的两种方式 (1) 按F5 (2)点击快速菜单栏上面的绿色三角形按钮. 2.生成解决方案 F6. 3.在代码上看见红色的波浪线,表示代码有语法错误. 4.一般我们在运行一个程序之前,我们先 ...
- SpringBoot系列之——整合JPA、mysql
一.JPA 1. 概念:JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 2. ...
- 微信小程序电商实战-首页(下)
好了,上一期我们把首页搜索.导航栏和广告轮播给做完了,那么接下来会继续完成我们首页的剩余部分,先看我们要实现的效果吧! 本期实现效果图.gif 本期我们要实现首页的实时热销榜.福利专场和左下方个人 ...
- python反爬之懒加载
# 在平时的爬虫中,如果遇到没有局部刷新,没有字体加密,右键检查也能看到清晰的数据,但是按照已经制定好的解析规则进行解析时,会返回空数据,这是为什么呢,这时可以在网页右键查看一下网页源代码,可以发现, ...