【Web前端问题】构造函数this指向

图片描述
在往上查到构造函数因为没有创建新的对象所有其中this指向的是window对象,
但是我在使用es6的模块加载export default引用一个构造方法的时候
在执行过程中在页面打断点提示的this表示undefined如下图

但是相同的文件 不用使用es6的模块引用 直接用cdn引用的时候就没有问题,this的确表示window对象 我很费解这个问题 如果有大神知道原理请给我解惑 谢谢
图片描述

回答:

1.严格模式下, 函数当做普通函数调用的时候 this 是指向 undefined

以对于一个开启严格模式的函数,指定的this不再被封装为对象,而且如果没有指定this的话它值是undefined
参考: 严格模式

2: 当使用了 es6 的 modules 的时候会自动开启严格模式, 而不用显示声明. 如果是用一些打包工具的话, 你会看到打包出来的 JS 前面加了 'use strict';
参考:ES6 modules

回答:

先看普通函数

var a='全局变量';//全局变量

function puTongFun(){//我的体育老师说,普通函数名不要全大写

console.log(a);//输出 全局变量

console.log(this);// 输出Window

}

puTongFun();调用

再看构造函数(字面量)

var a='全局变量';//

var obj={//es6的模板其实就是封装了一个对象,里面的this当然是指向对象,而不是window

a:'局部变量',

fun:function(){

console.log(this.a);//局部变量

}

}

obj.fun()

再看看一些观点就更明了了
ES6的Class只是面向对象编程的语法糖,升级了ES5的构造函数的原型链继承的写法,并没有解决模块化问题。Module功能就是为了解决这个问题而提出的。也就是说module是对面向对象的构造函数进行了封装

以上是 【Web前端问题】构造函数this指向 的全部内容, 来源链接: utcz.com/a/135829.html

回到顶部