const obj = { str: "object", fn: () => { console.log(this.str); }, fn2: function () { console.log(this.str); return { str: "newObj", fn: () => { console.log(this.str); } } }, }; obj.fn(); obj.fn2(); </script>
时间: 2024-02-10 11:23:01 浏览: 61
Vue源码中要const _toStr = Object.prototype.toString的原因分析
这段代码定义了一个名为 obj 的常量,它是一个对象。对象包含三个属性:str,fn 和 fn2。str 属性是一个字符串,fn 属性是一个箭头函数,fn2 属性是一个普通函数。
在调用 obj.fn() 时,箭头函数的 this 指向的是全局对象,因为箭头函数的 this 始终指向定义时所在的作用域。因此,控制台会输出 undefined。
在调用 obj.fn2() 时,普通函数的 this 指向的是调用该函数的对象,也就是 obj 对象。因此,控制台会输出 "object"。此外,fn2 函数返回了一个包含 str 和 fn 两个属性的新对象,其中 fn 是一个箭头函数,它的 this 仍然指向全局对象,因此控制台会输出 undefined。
阅读全文