本文实例讲述了es6中class类静态方法,静态属性,实例属性,实例方法。分享给大家供大家参考,具体如下:es6新增了一种定义对象实例的方法,使用class关键字定义类,与class相关的知识点也逐步火热起来,但是部分理解起来相对抽象,简单对class相关的知识点进行总结,更好的使用class。对于基本概念,请参见阮一峰老师的es6入门教程。本文主要总结class静态相关。关于类有两个概念,1,类自身,;2,类的实例对象1,类自身,;2,类的实例对象总的来说:静态的是指向类自身,而不是指向实例对象,主要是归属不同,这是静态属性的核心。总的来说:静态的是指向类自身,而不是指向实例对象,主要是归属不同,这是静态属性的核心。难点1:静态方法的理解难点1:静态方法的理解难点1:静态方法的理解
class Foo {
static classMethod() {

return 'hello';
}
}


class Foo {
static classMethod() {

return 'hello';
}
}

静态方法使用:在方法前加上static关键字静态方法使用为什么使用静态方法:阻止方法被实例继承,类的内部相当于实例的原型,所有在类中直接定义的方法相当于在原型上定义方法,都会被类的实例继承,但是使用static静态方法定义的不会被实例继承,而且可以被实例直接应用Foo.classMethod(),此时写成new Foo.classMethod()会提示不存在此方法为什么使用静态方法类的内部相当于实例的原型Foo.classMethod()new Foo.classMethod()静态方法中this指向:this指向类而不是类的实例静态方法中this指向
class Foo {
static bar () {

this.baz();
}
static baz () {

console.log('hello');
}
baz () {

console.log('world');
}
}
Foo.bar() // hello


class Foo {
static bar () {

this.baz();
}
static baz () {

console.log('hello');
}
baz () {

console.log('world');
}
}
Foo.bar() // hello

继承相关:静态方法可以被子类继承,也可以被super调用继承相关难点2:静态属性的理解,以及和实例属性的区别难点2:静态属性的理解,以及和实例属性的区别难点2:静态属性的理解,以及和实例属性的区别理解了静态的本质就知道静态属性是class类自身的属性相对的实例属性是指类的实例的属性,调用时使用 new Foo().'属性名'定义实例属性的方法:2种定义实例属性的方法类的实例属性可以用等式,写入类的定义之中类的实例属性可以用等式,写入类的定义之中类的实例属性可以用等式,写入类的定义之中1,在类中定义
class MyClass {
myProp = 42;
constructor() {

console.log(this.myProp); // 42
}
}
//上面代码中,myProp就是MyClass的实例属性。在MyClass的实例上,可以读取这个属性。
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 {
constructor(props) {

super(props);

this.state = {

count: 0

};
}
}


//等价于
class ReactCounter extends React.Component {
state = {

count: 0
};
}


//等价于
class ReactCounter extends React.Component {
state = {

count: 0
};
}

定义静态方法,定义静态方法,1,就和普通的Object添加属性一样,object.a = a;(目前唯一一种方法)缺点:老写法的静态属性定义在类的外部。整个类生成以后,再生成静态属性。容易忽略2,静态属性的提案: 相对于实例方法定义,在定义实例方法的前面加上static关键字,该方法未发布提案提案前面加上static关键字前面加上static关键字
class MyClass {
static myStaticProp = 42;
constructor() {

console.log(MyClass.myStaticProp); // 42
}
}


class MyClass {
static myStaticProp = 42;
constructor() {

console.log(MyClass.myStaticProp); // 42
}
}

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools./code/HtmlJsRun测试上述代码运行效果。在线HTML/CSS/JavaScript代码运行工具在线HTML/CSS/JavaScript代码运行工具http://tools./code/HtmlJsRun关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》javascript面向对象入门教程JavaScript错误与调试技巧总结JavaScript数据结构与算法技巧总结JavaScript遍历算法与技巧总结JavaScript数学运算用法总结希望本文所述对大家JavaScript程序设计有所帮助。