es6中class类静态方法,静态属性,实例属性,实例
本文实例讲述了es6中class类静态方法,静态属性,实例属性,实例方法。分享给大家供大家参考,具体如下
es6新增了一种定义对象实例的方法,使用class关键字定义类,与class相关的知识点也逐步火热起来,部分理解起来相对抽象,简单对class相关的知识点进行,更好的使用class。对于基本概念,请参见阮一峰老师的es6入门教程。本文主要class静态相关。
关于类有两个概念,1,类自身,;2,类的实例对象
静态的是指向类自身,而不是指向实例对象,主要是归属不同,这是静态属性的核心。
难点1静态方法的理解
class Foo { static classMethod() { return 'hello'; } }
静态方法使用在方法前加上static关键字
为什么使用静态方法阻止方法被实例继承,类的内部相当于实例的原型,所有在类中直接定义的方法相当于在原型上定义方法,都会被类的实例继承,使用static静态方法定义的不会被实例继承,而且可以被实例直接应用Foo.classMethod()
,此时写成new Foo.classMethod()
会提示不存在此方法
静态方法中this指向this指向类而不是类的实例
class Foo { static bar () { this.baz(); } static baz () { console.log('hello'); } baz () { console.log('world'); } } Foo.bar() // hello
继承相关静态方法可以被子类继承,也可以被super调用
难点2静态属性的理解,以及和实例属性的区别
理解了静态的本质就知道静态属性是class类自身的属性
相对的实例属性是指类的实例的属性,调用时使用 new Foo().'属性名'
定义实例属性的方法2种
类的实例属性可以用等式,写入类的定义之中
1,在类中定义
class MyClass { myProp = 42; constructor() { console.log(this.myProp); // 42 } } //上面代码中,myProp就是MyClass的实例属性。在MyClass的实例上,可以读取这个属性。
2,在constructor中定义(react中经典写法)
class ReactCounter extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } }
//等价于 class ReactCounter extends React.Component { state = { count: 0 }; }
定义静态方法,
1,就和普通的Object添加属性一样,object.a = a;(目前唯一一种方法)
缺点老写法的静态属性定义在类的外部。整个类生成以后,再生成静态属性。容易忽略
2,静态属性的 相对于实例方法定义,在定义实例方法的前面加上static关键字,该方法未发布
class MyClass { static myStaticProp = 42; constructor() { console.log(MyClass.myStaticProp); // 42 } }
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具测试上述代码运行效果。
更多关于JavaScript相关内容可查看本站专题《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程