javascript构造函数的作用 构造函数的八种方法

由于JavaScript的特性 , 一个构造函数就可以实现类的功能 , 所以有的时候 , 我们定义一个类 , 往往可以直接写一个构造函数:
function Cup(cupCover, cupBody, cupBottom) {this.cupCover = cupCoverthis.cupBody = cupBodythis.cupBottom = cupBottom}复制代码这样的定义方式很灵活简单 , 但有时候实例化出错了 , 也不会有相应的提示 。
比如我们这样的实例化:
let cup = Cup('iron', 'plastic', 'rubber')复制代码当我们没有加上new的时候 , 编译器并不会提示(弱类型的特点) , 而且由于Cup本身就是一个函数 , 所以在使用的时候 , 也可以正常运行 。
但是当我们cup此时肯定不是Cup类的 , 显而易见 , 当我们把Cup当作一个函数执行的时候 , cup的值取决于函数的返回 。这里没有返回 , 所以是undefined 。
那么我们执行完这个Cup()函数后 , 造成了什么影响呢?答案是Cup的属性绑定到了全局变量上 。对于浏览器来说就是window
cup.cupCover // undefinedwindow.cupCover // "iron"复制代码所以 , 我们该如何避免这种情况发生呢?
我们可以稍稍改造一下Cup构造函数:
function Cup(cupCover, cupBody, cupBottom) {if(this instanceof Cup) {this.cupCover = cupCoverthis.cupBody = cupBodythis.cupBottom = cupBottom}else {return new Cup()}}复制代码这样当我们再次不小心执行let cup = Cup(‘iron’, ‘plastic’, ‘rubber’)时 , 由于此时的this并不是Cup的派生类 , 所以我们直接返回一个实例 。
let cup = Cup('iron', 'plastic', 'rubber')cup.cupCover // "iron"复制代码而这种形式的构造函数 , 就是今天要说的安全模式的构造函数 。
【javascript构造函数的作用 构造函数的八种方法】以上就是javascript构造函数的作用(构造函数的八种方法)的相关内容了 , 更多精彩内容请关注!

    推荐阅读