关于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的认识停...
    悲欢自饮丶阅读 127评论 0 0
  • 1. this之谜 在JavaScript中,this是当前执行函数的上下文。因为JavaScript有4种不同的...
    百里少龙阅读 735评论 0 3
  • this全面解析 调用位置 在理解 this 的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的...
    后发而先制阅读 281评论 1 0
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 6,689评论 15 54
  • 文/朱一鸣 我的课余生活丰富多彩,如游泳、下棋等,但我最喜爱的,莫过于吹泡泡,因为它是最好的玩乐”武器“。 有一次...
    一鸣惊人朱阅读 86评论 0 0
  • 千遍浮屠览有秋,青山登陟使人愁。片云不许风断送,极目方添瘴起浮。得计骄人都诈伪,希贤遭世笑蜉蝣。天边云雨看停蓄,待...
    李野航阅读 179评论 0 0
  • 周日,钟先生因为踢球骨折,住院等候手术。我们本周的旅行也因此而取消。 在足球场上的时候,开始,我不知道事情是怎样,...
    kmimiao阅读 132评论 0 0