javascript代码实例教程-es6 javascript中的class属性的理解

发布时间:2019-01-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-es6 javascript中的class属性的理解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

类相当于实例的原型, 所有在类中定义的方法, 都会被实例继承。 如果在一个方法前, 加上static关键字, 就表示该方法不会被实例继承, 而是直接通过类来调用, 这就称为“ 静态方法”。

[javascript]view plaincopy

classFoo{

staticclassMethod(){

return'hello';

}

}

Foo.classMethod()//'hello'

VARfoo=newFoo();

foo.classMethod()

//TyPEError:foo.classMethodisnotafunction 上面代码中, Foo类的classMethod方法前有static关键字, 表明该方法是一个静态方法, 可以直接在Foo类上调用( Foo.classMethod()), 而不是在Foo类的实例上调用。 如果在实例上调用静态方法, 会抛出一个错误, 表示不存在该方法。

父类的静态方法, 可以被子类继承。[javascript]view plaincopy

classFoo{

staticclassMethod(){

return'hello';

}

}

classBarextendsFoo{}

Bar.classMethod();//'hello' 上面代码中, 父类Foo有一个静态方法, 子类Bar可以调用这个方法。

静态方法也是可以从super对象上调用的。[javascript]view plaincopy

classFoo{

staticclassMethod(){

return'hello';

}

}

classBarextendsFoo{

staticclassMethod(){

returnsuper.classMethod()+',too';

}

}

Bar.classMethod();静态属性[javascript]view plaincopy

classFoo{}

Foo.PRop=1;

Foo.prop//1 上面的写法为Foo类定义了一个静态属性prop。

目前, 只有这种写法可行, 因为 ES6 明确规定, Class 内部只有静态方法, 没有静态属性。[javascript]view plaincopy

//以下两种写法都无效

classFoo{

//写法一

prop:2

//写法二

staticprop:2

}

Foo.prop//undefined es7 有一个静态属性的提案, 目前 Babel 转码器支持。

这个提案对实例属性和静态属性, 都规定了新的写法。

( 1) 类的实例属性

类的实例属性可以用等式, 写入类的定义之中。

[javascript]view plaincopy

classMyClass{

myProp=42;

constructor(){

console.LOG(this.myProp);//42

}

} 上面代码中, myProp就是MyClass的实例属性。 在MyClass的实例上, 可以读取这个属性。

以前, 我们定义实例属性, 只能写在类的constructor方法里面。

[javascript]view plaincopy

classReactCounterextendsReact.@R_406_480@{

constructor(props){

super(props);

this.state={

count:0

};

}

} 上面代码中, 构造方法constructor里面, 定义了this.state属性。

有了新的写法以后, 可以不在constructor方法里面定义。

[javascript]view plaincopy

classReactCounterextendsReact.COMponent{

state={

count:0

};

} 这种写法比以前更清晰。

为了可读性的目的, 对于那些在constructor里面已经定义的实例属性, 新写法允许直接列出。[javascript]view plaincopy

classReactCounterextendsReact.Component{

constructor(props){

super(props);

this.state={

count:0

};

}

state;

} (2) 类的静态属性

类的静态属性只要在上面的实例属性写法前面, 加上static关键字就可以了。[javascript]view plaincopy

//老写法

classFoo{}

Foo.prop=1;

//新写法

classFoo{

staticprop=1;

} 上面代码中, 老写法的静态属性定义在类的外部。 整个类生成以后, 再生成静态属性。 这样让人很容易忽略这个静态属性, 也不符合相关代码应该放在一起的代码组织原则。 另外, 新写法是显式声明( declarative), 而不是赋值处理, 语义更好。

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-es6 javascript中的class属性的理解全部内容,希望文章能够帮你解决javascript代码实例教程-es6 javascript中的class属性的理解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。