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

由于JavaScript的特性,一个构造函数就可以实现类的功能,所以有的时候,我们定义一个类,往往可以直接写一个构造函数:functionCup(cupCover,cupBody,cupBottom){this.cupCover=

由于JavaScript的特性,一个构造函数就可以实现类的功能,所以有的时候,我们定义一个类,往往可以直接写一个构造函数:

function Cup(cupCover, cupBody, cupBottom) { this.cupCover = cupCover this.cupBody = cupBody this.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 = cupCover this.cupBody = cupBody this.cupBottom = cupBottom } else { return new Cup() }}复制代码

这样当我们再次不小心执行let cup = Cup(‘iron’, ‘plastic’, ‘rubber’)时,由于此时的this并不是Cup的派生类,所以我们直接返回一个实例。

let cup = Cup(\'iron\', \'plastic\', \'rubber\')cup.cupCover // \"iron\"复制代码

而这种形式的构造函数,就是今天要说的安全模式的构造函数。

以上就是javascript构造函数的作用构造函数的八种方法)的相关内容了,更多精彩内容请关注!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/74077.html

(0)
nan
上一篇 2021-12-31
下一篇 2021-12-31

相关推荐

发表回复

登录后才能评论