簡記: this在不同情況下的指向: 1.普通函數調用,this指向window對象 2.作為對象的方法被調用,由對象調用,this指向該對象 3.使用new構造函數,創建新實例,實例的方法或屬性的this指向新實例 4.apply/call調用的時候,this指向由參數設定的對象值 ...
簡記:
this在不同情況下的指向:
1.普通函數調用,this指向window對象
var name = "window"; function func() { var name = "object"; console.log(this.name); } func(); // window
2.作為對象的方法被調用,由對象調用,this指向該對象
var name = "window"; var object = { name: "object", func: function() { console.log(this.name); } } object.func(); // object
3.使用new構造函數,創建新實例,實例的方法或屬性的this指向新實例
var name = "window"; function Person() { this.name = "person"; } Person.prototype.sayName = function() { console.log(this.name); } var person = new Person(); person.sayName(); // person
4.apply/call調用的時候,this指向由參數設定的對象值
var o1 = { name: "o1", sayName: function() { console.log(this.name); } } var o2 = { name: "o2" } o1.sayName.call(o2); // o2 o1.sayName.apply(o2); // o2