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 相关文章推荐
javascript 动态生成私有变量访问器
Dec 06 Javascript
深入理解javascript的执行顺序
Apr 04 Javascript
不间断循环滚动效果的实例代码(必看篇)
Oct 08 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
May 17 jQuery
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
jQuery选择器之子元素过滤选择器
Sep 28 jQuery
laravel5.3 vue 实现收藏夹功能实例详解
Jan 21 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
Mar 21 Javascript
webpack4 + react 搭建多页面应用示例
Aug 03 Javascript
解决element ui select下拉框不回显数据问题的解决
Feb 20 Javascript
Vue.js仿Select下拉框效果
Feb 18 Javascript
基于PHP pthreads实现多线程代码实例
Jun 24 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
目录,文件操作详谈―PHP
2006/11/25 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
Python decimal模块使用方法详解
2020/06/08 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
大学生思想汇报范文
2013/12/31 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
踏青活动策划方案
2014/08/19 职场文书
2014年行政部工作总结
2014/11/19 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
Python集合的基础操作
2021/11/01 Python