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 相关文章推荐
EXTJS记事本 当CompositeField遇上RowEditor
Jul 31 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
jQuery选择器全面总结
Jan 06 Javascript
javascript向后台传送相同属性的参数即数组参数
Feb 17 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
May 31 Javascript
jQuery实现简单的tab标签页效果
Sep 12 Javascript
JavaScript实现购物车基本功能
Jul 21 Javascript
JS关于刷新页面的相关总结
May 09 Javascript
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
Vue press 支持图片放大功能的实例代码
Nov 09 Javascript
vue.js循环radio的实例
Nov 07 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP学习之正则表达式
2011/04/17 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
js控制frameSet示例
2013/09/10 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
原生js实现贪吃蛇游戏
2020/10/26 Javascript
Python3基础之基本运算符概述
2014/08/13 Python
Python修改MP3文件的方法
2015/06/15 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
基于pandas将类别属性转化为数值属性的方法
2018/07/25 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
商务日语毕业生自荐信范文
2013/11/14 职场文书
给老婆道歉的话
2015/01/20 职场文书
档案管理员岗位职责
2015/02/12 职场文书
岗位聘任报告
2015/03/02 职场文书
个人工作决心书
2015/09/22 职场文书