javascript - 关于js构造函数
怪我咯
怪我咯 2017-04-11 12:58:20
[JavaScript讨论组]
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)
高洛峰
 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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号