为了账号安全,请及时绑定邮箱和手机立即绑定

关于js构造函数

关于js构造函数

幕布斯7119047 2018-10-12 14:10:18
function B(){    this.a=1;    this.b=2;    this.c=3;    alert(this.a);}alert(B.a);B();var c=new B();alert(c.a);你先猜一下,会弹出什么,在控制台打印出什么?正确答案为:先弹出1个undefined,再接着弹出3个1隐隐约约明白一点。
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

 function B() {        this.a = 1;
        alert(this.a);
    }

B没被作为构造函数创建实例时,它只是个普通函数

alert(B.a);//undefined

此时输出undefined,因为B函数也是一个对象,这个对象上并没有属性a

B();//1

声明在函数局部作用域中的this.a=1就相当于a=1;在B函数被调用过之后,a就会变成全局变量,所以此时B()调用了alert(this.a),而this指向window对象 所以输出1

你可以试试,不先B()调用的话,在外面直接console.log(a)取不到,调用后就能取到了

var c=new B();alert(c.a);

最后这两个玩意就更简单了。。以函数B为构造函数创建了一个它的实例c,【创建实例时new B()】等同于调用函数B,最后你又自己输出了实例c的构造函数中的公共属性a


查看完整回答
反对 回复 2018-11-30
  • 1 回答
  • 0 关注
  • 509 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信