es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析


Posted in Javascript onFebruary 15, 2020

本文实例讲述了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代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
select组合框option的捕捉实例代码
Sep 30 Javascript
Javascript倒计时页面跳转实例小结
Sep 11 Javascript
javascript中数组的concat()方法使用介绍
Dec 18 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
AngularJs Understanding the Model Component
Sep 02 Javascript
js仿支付宝多方框输入支付密码效果
Sep 27 Javascript
javascript iframe跨域详解
Oct 26 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
JavaScript之promise_动力节点Java学院整理
Jul 03 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
详解ES6 系列之异步处理实战
Oct 26 Javascript
一个小时快速搭建微信小程序的方法步骤
Apr 15 Javascript
Vue父子传递实例讲解
Feb 14 #Javascript
Javascript操作select控件代码实例
Feb 14 #Javascript
微信小程序复选框实现多选一功能过程解析
Feb 14 #Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
Feb 14 #Javascript
node事件循环和process模块实例分析
Feb 14 #Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 #Javascript
JavaScript简单编程实例学习
Feb 14 #Javascript
You might like
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
对python中dict和json的区别详解
2018/12/18 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
django修改models重建数据库的操作
2020/03/31 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
python处理写入数据代码讲解
2020/10/22 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
迎八一活动主题
2014/01/31 职场文书
军训自我鉴定范文
2014/02/13 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
2014年销售部工作总结
2014/12/01 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
深入理解python多线程编程
2021/04/18 Python
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript