ES6 中的Class
栏目: JavaScript · 发布时间: 6年前
内容简介:ES5 的写法ES6 的写法在类的实例上面调用方法,其实就是调用原型上的方法。
基本用法
ES5 的写法
function Point(x, y) {
this.x = x;
this.y = y;
}
Point.prototype.toString = function () {
return '(' + this.x + ', ' + this.y + ')';
};
var p = new Point(1, 2);
ES6 的写法
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}
在类的实例上面调用方法,其实就是调用原型上的方法。
class B {}
let b = new B();
b.__proto__.constructor === B.prototype.constructor?console.log("true"):console.log("false")
console.log(typeof b.__proto__.constructor)
console.log(typeof B.prototype.constructor)
注:类的内部所有定义的方法,都是不可枚举的
constructor 方法
constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。
注意点
-
constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。
class Foo { constructor() { return Object.create(null); } } new Foo() instanceof Foo // false
-
类必须使用new调用,否则会报错。
class book{ constructor(){ this._year=2004; this.edition=1; } get year(){ return this._year; } set year(newVal){ if(newVal>2004){ this._year=newVal; this.edition+=newVal-2004; } } } let b=new book(); b.year = 2004; //2 console.log(b.edition);
取值函数(getter)和存值函数(setter)
class book{
constructor(){
this._year=2004;
this.edition=1;
}
get year(){
return this._year;
}
set year(newVal){
if(newVal>2004){
this._year=newVal;
this.edition+=newVal-2004;
}
}
}
let b=new book();
b.year = 2004; //2
console.log(b.edition);
以上所述就是小编给大家介绍的《ES6 中的Class》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UML用户指南
[美] Grady Booch、James Rumbaugh、Ivar Jacobson / 邵维忠、麻志毅、马浩海、刘辉 / 人民邮电出版社 / 2006-6 / 49.00元
《UML用户指南》(第2版)是UML方面最权威的一本著作,三位作者是面向对象方法最早的倡导者,是UML的创始人。本版涵盖了UML 2.0。书中为具体的UML特征提供了参考,描述了一个使用UML进行开发的过程,旨在让读者掌握UML的术语、规则和语言特点,以及如何有效地使用这种语言,知道如何应用UML去解决一些常见的建模问题。《UML用户指南》(第2版)由7个部分组成,而且每章都描述了一个特定UML特......一起来看看 《UML用户指南》 这本书的介绍吧!