关于this

一 this是一个特别的关键字,他自动定义在所有函数的作用域中------->他是在运行(函数被调用)时进行绑定的,隐式的传递一个对象的引用;
1.1 为什么要使用this:

//使用this
function foo(){
    return this.name.toUpperCase();
}
var person = {
    name: 'jim'
}
console.log(foo.call(person));
//不实用this
function foo(name){
    return name.toUpperCase();
}
var person = {
    name: 'jim'
}
console.log(foo(person.name));
//对比:  不使用this必须显式的传递上下文对象,使用模式复杂时不易于复用

1.2 绑定规则:
1.2.1 默认绑定---->独立函数调用

//其一:
function foo(){
  alert(this); 
}
foo();  //window
//其二:
 setTimeout(foo,30);  //window

1.2.2 隐式绑定---->调用位置上下文对象

function say(){
    console.log(this);
}
var person = {
    sayName: say
}
person.sayName();  //person

1.2.3 显式绑定---->call()和apply()方法的第一个参数

function say(){
    console.log(this.age);
}
var person = {
    sayName: say
}
var jim = {
    age: 18
}
person.sayName.call(jim);  //jim

1.2.4 new绑定---->创建的新对象实例本身

function Person(name){
   this.name = name;
}
var jim = new Person('jim');
console.log(jim.name);  //'jim'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从学习前端开始已经大概要两个月了,这几天突然发现this并没有想想中这么简单,之前很长一段时间对于this的认识停...
    悲欢自饮丶阅读 2,299评论 0 0
  • 1. this之谜 在JavaScript中,this是当前执行函数的上下文。因为JavaScript有4种不同的...
    百里少龙阅读 4,617评论 0 3
  • this全面解析 调用位置 在理解 this 的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的...
    后发而先制阅读 3,157评论 1 0
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 11,796评论 15 54
  • 文/朱一鸣 我的课余生活丰富多彩,如游泳、下棋等,但我最喜爱的,莫过于吹泡泡,因为它是最好的玩乐”武器“。 有一次...
    一鸣惊人朱阅读 1,189评论 0 0