请教一个静态属性和实例项属性的区别
static total_car = 0;
color = '#000';
这两者区别是什么?分别用在哪里?
正在回答
同学你好, 可以参考如下解析理解
这个是语法规定, 只有在constructor构造器中, 才可以使用this的方式给实例对象设置属性和方法
两者的区别就是
(1)只在类中书写color = "#000" 可以理解是给实例对象设置默认属性值, 不可以在实例化的时候根据传入的值修改该属性, 所有实例化对象上该属性值都是相同的
打印结果
(2)如果在constructor构造器中,同时使用this.color设置属性, 会覆盖在类中直接写color="#000"的属性值
打印结果, color是传入的值
是的, 实例属性一般都是直接放在constructor构造函数中的
一般的使用场景就是当我们声明一个类的时候, 与这个类本身相关的属性和方法将其定义为静态属性。
例如:我们有一个Car类表示一类车, 我们想要描述这个一类车都是德国生产的, 那么我们就可以给这个类设置一个静态属性用来描述生产地, 示例代码:
建议:同学还有其他疑问的时候,可以在问答区新开一个提问,便于更快的帮助同学解决问题哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
同学你好, 首先, 我们要区分静态属性和实例属性分别指什么,
直接添加到Class类上的属性称为静态属性,
添加到实例对象上的属性称之为实例属性。
两者的区别就是,使用static修改的属性不会被实例对象继承(实例对象访问不到), 实例属性可以通过实例对象访问到。 老师这里举个简单的例子帮助同学更好的理解
打印结果, 可以看出由于des是静态属性, 可以直接在Person类上访问Person.des,但在Person类的实例p1上访问不到该属性。如果在实例上调用静态属性,则返回undefined, 同理age是实例属性, 直接在Person类上访问不到。
综上所诉,可知当我们定义一个类的时候, 与这个类本身相关的属性, 可以通过static定义成静态属性,用来描述与类相关的属性, 如果是与实例相关的,可以定义为实例属性。
同学可以结合示例, 自己测试一下,根据代码实现的效果,帮助自己更好的理解哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星