静态属性要定义在类外面么

静态属性要定义在类外面么

3-1中的静态属性Car.totalCar是定义在类外面的。

这一节中构造函数中有P.a=1; 我试了一下Person1的实例调用a时提示undefined,直接用Person1.a可以输出1,所以应该也算是静态属性吧。

那么静态属性定义在类外,类中,构造函数中有什么区别么?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,关于console.log(person.a)的输出结果是undefined、 console.log(Person1.a)的输出结果是1、 console.log(P.a)报错,原因解析如下:http://img1.sycdn.imooc.com//climg/5ecf3ca409fba43517960599.jpg

希望可以帮到你!

卡布琦诺 2019-11-03 12:01:49

同学你好,需要先理解什么是静态属性,静态属性指的是class本身的属性,即class.propName,而不是定义在实例对象(this)上的属性,

http://img1.sycdn.imooc.com//climg/5dbe50ae0925c86a04790162.jpg

上面代码的写法为Foo类定义了一个静态属性prop,而目前,只有这种写法可行,因为ES6明确规定,class内部只有静态方法,没有静态属性。

希望可以帮到你!

  • 提问者 weixin_慕雪558436 #1
    const Person1 = class P { constructor() { P.a = 1; console.log('我是鸽手!!咕咕咕!!'); } }; var person=new Person1(); console.log(person.a); //输出undefined console.log(Person1.a); //输出1 console.log(P.a); //报错 老师能解释一下这三个输出么,这里的a不是class本身的属性么,因为实例获得不到,所以并没有定义在this上吧
    2019-11-03 22:21:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师