关于js单例模式和构造函数静态方法的一些疑问
<script>
function box() {
this.sex = "男"
this.test = "测试"
}
box.admin = function () {
console.dir(this.test);
if (!this.test) {
this.test = new box()
}
return this.test
}
box.admin()
box.admin()
box.admin()
console.log(new box().sex)
console.log(new box().test)
console.log(new box.admin().test)
</script>
1.构造函数的静态方法admin里面的this指向box()构造函数,为什么第一次box.admin()输出的this.test不是"测试"而是undefined?
2.构造函数的静态方法admin方法里执行完里面的参数应该被回收,为什么第一次box.admin()输出为undefined,第二次输出this.test就有值了? 为new box()对象?如果没被销毁它存在于什么环境里面?
3.构造函数的静态方法admin方法里面的this.test 和构造函数本身的 this.test是什么关系?
4.如果静态方法里面的this.test没有被销毁 为什么在外部取不到静态方法里面this.test为对象的那个值 只能取到实例化构造函数的test值?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是new的过程: