this指向
//this在函数定义的时候 确定不了,执行的时候才能确定指向
//最终指向的是调用它的对象(指向最近的调用)
定时器/全局/事件回调/匿名函数/对象属性/箭头函数
window/window/事件对象/window/调用者/定义它的上下文this
// this指向window
function fn() {
console.log(this) //window
}
var o = {
user: "zs",
fn: function () {
console.log(this.user)
}
}
o.fn() //zs
var result = o.fn //全局函数
result() //undefined
new操作符做了哪些工作
创建一个对象
为这个对象绑定原型
执行构造函数代码
返回新对象
function Fn() {
this.user = "zs"
}
var a = new Fn()
console.log(a.user) //zs
// a仅仅是创建的实例对象 没有执行
function fn() {
this.user = "zs"
return {}
}
var o = new fn()
console.log(o.user) //undefined
function fn() {
this.user = "zs"
return function () { }
}
var o = new fn()
console.log(o.user) //undefined
function fn() {
this.user = "zs"
return 1 // undefiend / null
}
var o = new fn()
console.log(o.user) //"zs"
// 如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。
参考:https://www.cnblogs.com/pssp/p/5216085.html