关于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)