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

来源:3-3 类表达式

weixin_慕雪558436

2019-11-03 09:49:32

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

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

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

写回答

2回答

樱桃小胖子

2019-11-04

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

希望可以帮到你!

0

樱桃小胖子

2019-11-03

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

http://img.mukewang.com/climg/5dbe50ae0925c86a04790162.jpg

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

希望可以帮到你!

0
heixin_慕雪558436
h 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上吧
h019-11-03
共1条回复

0 学习 · 10739 问题

查看课程