代码描述:javascript创建构造函数。javascript创建构造函数代码下载
在javascript中,任何一个函数都可以作为构造函数,只要使用new运算符调用一个函数,那么这个函数就是被当做构造函数使用,代码实例如下:
<script> function antzone(webName){ this.name=webName; } var oantzone=new antzone("51前端"); console.log(oantzone.name); </script>
以上代码就是将antzone作为构造函数使用。 antzone作为构造函数使用的时候是没有任何问题的,但是如果作为普通的函数使用,this的指向就有可能是其他对象,那么就有可能造成污染,下面就将此代码进行一下改造,代码如下:
<script> function antzone(webName){ if(this instanceof antzone){ this.name=webName; } else{ return new antzone(webName) } } </script>
上面代码就可以构建一个相对安全的构造函数,下面就对代码的代码做一下分析: 首先判断this是否是antzone构造函数的实例,如果是的话,那么antzone就是作为构造函数使用,否则就是作为普通函数,当作为普通函数的时候,就强行作为构造函数使用。 特别说明: 如果上面的使用call()或者appy()方式被其他构造函数继承的时候,需要做一下改造,因为在默认状态下this instanceof antzone返回值一般是false,不过如果其他函数继承自antzone就可以了,演示代码如下:
<script> function antzone(webName){ if(this instanceof antzone){ this.name=webName; } else{ return new antzone(webName) } } function func(){} func.prototype=new antzone(); func.prototype.constructor=func; var ofunc=new func(); antzone.call(ofunc,"51前端"); console.log(ofunc.name); </script>
请绑定手机号,在继续操作
注意:只有绑定手机以后,才可使用网站全部功能