javascript上下文this
2024-10-01 15:50:34
js的四种调用方式:
一 作为函数的调用:
在严格模式下this,undefined,在非严格模式下指向全局window对象。
二 作为方法调用:
this通常指向调用的对象
三 作为构造函数的调用:
this指向新创建的对象
四 通过call,apply调用:
this指向call或者apply的第一个参数
箭头函数没有单独的this
所有函数均可使用bind方法,创建函数,并且绑定到bind方法传入的参数上,被绑定的函数与原始函数具有一致的行为。
let obj1 = {
whoAMi: function() {
return this;
}
}
let obj2 = {
whoAMi: obj1.whoAMi
}
let iden = obj2.whoAMi;
console.log(obj1.whoAMi());//obj1
console.log(obj2.whoAMi());//obj2
iden();//windows,方法调用,(strict undefined)
obj1.whoAMi.call(obj2);//obj2
function Fn() {
this.whoAMi = () => {this;}
}
let obj1 = new Fn();
let obj2 = {
whoAMi: obj1.whoAMi
}
obj1.whoAMi();//obj1
obj2.whoAMi();//obj1,由于obj1是构造函数,this代表调用者
function Fn() {
this.whoAMi = function() {
return this;
}.bind(this);
}
let obj1 = new Fn();
let obj2 = {
whoAMi: obj1.whoAmi
};
obj1.whoAmi();//obj1
obj2.whoAMi();//obj1
最新文章
- tp5 中 model 的删除方法
- UE4蓝图编程的第一步
- extjs简单动画2
- springmvc自定义日期编辑器
- 20160122.CCPP详解体系(0001天)
- TIMAC 学习笔记(二)
- 使用Fragment实现类似TabHost标签栏的效果
- SQL表连接
- spring-boot整合dubbo:Spring-boot-dubbo-starter
- 解决wso2 axis2server 跑不起
- [UE4]用Blenspace混合空间动画代替AimOffset动画偏移
- SpringMVC学习八 @ResponseBody注解
- 绝版Node--Sequlize搭建服务(Node全栈之路 二)
- dispatch_group_async 使用详解
- selenium3 下载、配置
- Sublimetext3插件与使用技巧
- capacilitys docker中的权限设置 privileged
- springmvc-框架学习
- 搜索水题四连发_C++
- Redis的管理