函数调用不添加括号 函数内部this指的是window
function Foo(){
// 这里是个坑,getName前面没有this.,执行Foo()的时候相当于给全局window增加了getName方法
//window.getName = function () {console.log(1)}
getName = function(){
console.log(1)
}
return this
}
Foo.getName = function () {
console.log(2)
}
Foo.prototype.getName = function () {
console.log(3)
}
var getName = function(){console.log(4)}
function getName(){
console.log(5)
}
Foo.getName() // 2 Foo函数自身就有getName方法
getName() // 4
Foo().getName() // 1
getName()
new Foo().getName() // 3
var o = {
a: 10,
b: {
fn: function(){
console.log(this.a)
console.log(this)
}
}
}
// 最终调用fn方法的是b对象,fn方法里面的this指向的是b,所以console.log(this.a)是
o.b.fn() // undefined