作为 普通函数调用 和 作为对象属性调用 的区别:
看到this这一部分,写了两个很像的函数,区分开两者
1.
var name = "globe";
var MyClass = {
name:"win"
getName:function(){return this.name}
}
console.log(MyClass.getName())
2.
window.name = "globe";
var MyClass = {
name:"win"
getName:function(){return this.name}
};
var getname = MyClass.getName;
console.log(getname())
想想看结果分别是什么?
第一段代码结果是 globe
第二段则是 win 若删除对象的name属性,结果为undefined
我的理解是: 当包含this的函数作为对象的属性被调用时,this指向该对象,若对象中无此属性,返回undefined ; 若作为普通函数调用this指向全局对象,即window
构造器调用中this指向
构造器调用中 js大部分函数可做构造器 var myObj = function(){...}
new运算符会返回一个对象,this就指向该对象
若function中显式返回一个对象 var myObj = function(){return{name:“return”}}
this会指向返回的对象