请教一个静态属性和实例项属性的区别

请教一个静态属性和实例项属性的区别

static total_car = 0;

    color = '#000';

这两者区别是什么?分别用在哪里?

正在回答

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

2回答

同学你好, 可以参考如下解析理解

  1. 这个是语法规定, 只有在constructor构造器中, 才可以使用this的方式给实例对象设置属性和方法

    两者的区别就是

    (1)只在类中书写color = "#000" 可以理解是给实例对象设置默认属性值, 不可以在实例化的时候根据传入的值修改该属性, 所有实例化对象上该属性值都是相同的

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

    打印结果

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

    (2)如果在constructor构造器中,同时使用this.color设置属性, 会覆盖在类中直接写color="#000"的属性值

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

    打印结果, color是传入的值

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

  2. 是的, 实例属性一般都是直接放在constructor构造函数中的

  3. 一般的使用场景就是当我们声明一个类的时候, 与这个类本身相关的属性和方法将其定义为静态属性。

    例如:我们有一个Car类表示一类车, 我们想要描述这个一类车都是德国生产的, 那么我们就可以给这个类设置一个静态属性用来描述生产地, 示例代码:

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

建议:同学还有其他疑问的时候,可以在问答区新开一个提问,便于更快的帮助同学解决问题哦  

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

好帮手慕慕子 2019-10-18 14:01:42

同学你好, 首先, 我们要区分静态属性和实例属性分别指什么, 

  1. 直接添加到Class类上的属性称为静态属性,

  2. 添加到实例对象上的属性称之为实例属性。 

两者的区别就是,使用static修改的属性不会被实例对象继承(实例对象访问不到), 实例属性可以通过实例对象访问到。 老师这里举个简单的例子帮助同学更好的理解

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

打印结果, 可以看出由于des是静态属性, 可以直接在Person类上访问Person.des,但在Person类的实例p1上访问不到该属性。如果在实例上调用静态属性,则返回undefined, 同理age是实例属性, 直接在Person类上访问不到。

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

综上所诉,可知当我们定义一个类的时候, 与这个类本身相关的属性, 可以通过static定义成静态属性,用来描述与类相关的属性,  如果是与实例相关的,可以定义为实例属性。

同学可以结合示例, 自己测试一下,根据代码实现的效果,帮助自己更好的理解哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~


  • 明白了, 1、那视频中 color = '#000';前面怎么没用this呢? 2、实例属性一般都放在construct构造函数里对吧? 3、能说一下静态属性的使用场景吗?
    2019-10-18 18:20:17
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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