外星人源码论坛 首页 编程经验 this、apply、call和bind

this、apply、call和bind

2018-3-5 06:52
原作者: 外星人源码网 来自: 外星人源码网 收藏 分享 邀请

this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。this的指向大致可以分为以下四种:◎ 作为对象的方法调用◎ 作为普通函数调用◎ 构造器调用◎ Function ...

this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。
this的指向大致可以分为以下四种:
◎ 作为对象的方法调用
◎ 作为普通函数调用
◎ 构造器调用
◎ Function.prototype.call或Function.prototype.apply调用

丢失的this:

var obj={
myName:"sven",
getName:function(){
    return this.myName;
}
}
console.log(obj.getName());//输出:"sven"

var getName2 = obj.getName;
console.log(getName2());//输出:"undefined"

分析:

验证:

//设置全局变量
var  myName = "Windows.name";
var obj={
myName:"sven",
getName:function(){
    return this.myName;
}
}
console.log(obj.getName());//输出:"sven"

var getName2 = obj.getName;
console.log(getName2());//输出:"Windows.name"

apply和call方法的用法:

apply(obj,[argument1,argument2,….]) 接收两个参数:【参数1】一个对象,用于指定this的指向,默认不设置或者设置为null的情况下指向的是window。【参数2】传入参数的一个数组,参数个数是确定的。
call(obj,argument1,argument2,….) 接收不确定参数:【第一个参数】一个对象,用于指定this的指向,默认不设置或者设置为null的情况下指向的是window。【后面的参数】传入的参数,参数个数是不确定的。
代码验证:

bind()的用法:

接着上面的代码:

局部变量不被销毁的原因:

利用闭包实现局部变量不被销毁:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

粉丝 阅读73 回复0
上一篇:
关于APP内嵌H5后退按钮问题发布时间:2018-03-05
下一篇:
18届校招求职面经及总结发布时间:2018-03-05
推荐资讯
阅读排行
国内最专业的源码技术交流社区
全国免费热线电话

0373-5171417

周一至周日9:00-23:00

反馈建议

admin@eenot.com 在线QQ咨询

扫描二维码关注我们