#tag
this的指向的笔记
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
function test() { age = 32 let obj = { name: 'Sam', age: 23, testt: this.age } return obj }
function test1() { age = 32 let obj = new Object() obj.name = 'Sam' obj.age = 23 obj.testt = this.age return obj }
let o1 = { x: 1, o2: { name: 'sam', age: this.x } }
let o1 = new Object() o1.age = 32 o1.o2 = new Object() o1.o2.name = 'Sam' o1.o2.age = 23 o1.o2.testt = this.age return o1.o2
|
上面的返回的obj为啥testt是32?
因为第一行代码的age没有给var
, let
, const
这些修饰符
所以如果我们没有开启严格模式的话'use strict'
那么age = 32
=> window.age = 32
正常执行这个test()时,当前的this指向window。
如果使用new test()的话,当前函数就变成了构造函数了,所以this就是当前创建出来的实例对象了。