this

1.this初识

1构造函数

//    情况一
//    function Person(name,age){
//        this.name =name;
//        this.age=age;
//        console.log(this)
//    }
//    var one = new Person("zhangsan",26);//实例化出对象 Person{name:"zhangsan",age:26}

//    情况二
//function Person(name,age){
//    this.name =name;
//    this.age=age;
//    console.log(this)
//}
//    Person()//this指向window
2.函数作为对象的一个属性

A)如果函数作为对象的一个属性时,并且作为对象的一个属性被调用时,函数中的this指向该对象。
eg:
var student={
    name:"lisi",
    age:12,
    say:function(){
        console.log(this.name)
    }
}
    student.say()//lisi、
B)fn函数被赋值到了另一个变量中
eg:
var student={
    name:"lisi",
    age:12,
    say:function(){
        console.log(this.name)
    }
}
var name="zhangsan";
var aa = student.say;
    aa();//zhangsan
3.函数不是作为对象的一个属性
eg:
        var obj ={
        x :10,
        fn:function(){
            function func(){
                console.log(this);//window
                console.log(this.x)//undefined
            }
            func();
        }
    }
    obj.fn();
4.使用call、aplly改变this指向
eg:
    var student={
        name:"lisi",
        age:12,
        x:50,
    }
    var x=10;
    var fn = function(){
        console.log(this)//student
        console.log(this.x)//50
    }
    fn.call(student);

你可能感兴趣的:(this)