当前位置: 首页 > 编程笔记 >

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

江飞章
2023-03-14
本文向大家介绍es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析,包括了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代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

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

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

 类似资料:
  • 本文向大家介绍ES6 javascript中class静态方法、属性与实例属性用法示例,包括了ES6 javascript中class静态方法、属性与实例属性用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6 javascript中class静态方法、属性与实例属性用法。分享给大家供大家参考,具体如下: 类相当于实例的原型, 所有在类中定义的方法, 都会被实例继承。 如果在一个

  • 本文向大家介绍PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子,包括了PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子的使用技巧和注意事项,需要的朋友参考一下 本文介绍在PowerShell中如何使用.NET对象,PowerShell内在支持大量的.NET对象。 调用类的静态方法 用中括号把类的名称括起来,然后输入两个冒号,然后再输入方法

  • 我们可以把一个方法赋值给类的函数本身,而不是赋给它的 "prototype"。这样的方法被称为 静态的(static)。 在一个类中,它们以 static 关键字开头,如下所示: class User { static staticMethod() { alert(this === User); } } User.staticMethod(); // true 这实际上跟直接将其

  • 本文向大家介绍js面向对象之静态方法和静态属性实例分析,包括了js面向对象之静态方法和静态属性实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js面向对象之静态方法和静态属性。分享给大家供大家参考。具体分析如下: 先看如下代码: 思考:我们可不可以,在不创建maque对象的情况下,使用Bird的方法和属性? 知识点补充: (1)函数是什么:函数是变量,函数也是对象。函数的本质事实上

  • js的类包含 静态属性和实例属性 静态方法和实例方法 请问什么场景应该把这个属性定义为静态的,什么场景应该为实例的? 请问什么场景应该把这个方法定义为静态的,什么场景应该为实例的?我能想到的是类似于Integer.parse()之类的静态方法,我恍惚能理解静态方法的使用场景,但是,还是没有那种概括性的思路。 感谢大佬~~

  • 本文向大家介绍PHP中类属性与类静态变量的访问方法示例,包括了PHP中类属性与类静态变量的访问方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP中类属性与类静态变量的访问方法。分享给大家供大家参考,具体如下: 运行结果为:hello world 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Arr