xml地图|网站地图|网站标签 [设为首页] [加入收藏]

澳门皇家娱乐场es6基础语法

来源:http://www.ccidsi.com 作者:最新解决方案 人气:99 发布时间:2019-05-06
摘要:2.类声明 类声明是定义类的一种方式,就像下面这样,使用 class 关键字后跟一个类名(这里是 Polygon),就可以定义一个类。class Polygon { constructor(height, width) { this.height = height; this.wid

2.类声明

  类声明是定义类的一种方式,就像下面这样,使用 class 关键字后跟一个类名(这里是 Polygon),就可以定义一个类。

class Polygon {
    constructor(height, width) {
        this.height = height;
        this.width = width;
    }
}

super关键字,它代表父类的实例(即父类的this对象)。子类必须在constructor方法中调用super方法,不然新建实例时会报错。那是因为子类未有和睦的this对象,而是继续父类的this对象,然后对其开始展览加工。要是不调用super方法,子类就得不到this对象。

四.类表达式

类表达式是定义类的另外一种方式。在类表达式中,类名是可有可无的。如果定义了类名,则该类名只有在类体内部才能访问到。

Class之间能够通过extends关键字贯彻三番五次,那比ES五的通过修改原型链完结持续,要显明和造福广大。上边定义了一个Cat类,该类通过extends关键字,承继了Animal类的富有属性和格局。

1.定义类

  让我们回想一下在ES5中定义一个类的方式。通过不是很常用的Object.defineProperty方法,我可以定义一些只读的属性。

function Vehicle1(make, year) {
    Object.defineProperty(this, 'make', {
        get: function() { return make; }
    });

    Object.defineProperty(this, 'year', {
        get: function() { return year; }
    });
}
Vehicle1.prototype.toString = function() {
    return this.make   ' '   this.year;
}
var vehicle1 = new Vehicle1('Toyota Corolla', 2009);
console.log(vehicle1.make); // Toyota Corolla
vehicle1.make = 'Ford Mustang';
console.log(vehicle1.toString()) // Toyota Corolla 2009

  很简单,我们定义了一个有两个只读属性和一个自定义toString方法的Vehicle类。让我们在ES6中来做一样的事情:

class Vehicle {
    constructor(make, year) {
        this._make = make;
        this._year = year;
    }
    get make() {
        return this._make;
    }
    get year() {
        return this._year;
    }
    toString() {
        return `${this.make} ${this.year}`;
    }
}
var vehicle = new Vehicle('Toyota Corolla', 2009);
console.log(vehicle.make); // Toyota Corolla
vehicle.make = 'Ford Mustang';
console.log(vehicle.toString()) // Toyota Corolla 2009

  上面两个例子中定义的类有一个不同的地方。我们为了享受新的get语法带来的好处,所以只是将make和year定义成了普通的属性。这使它们可以被外部所改变。如果你确实需要一个严格的私有属性,还是请继续使用defineProperty。

澳门皇家娱乐场,ES6的继续机制,实质是先创制父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。

7.类继承

使用 extends 创建子类
  extends 关键字可以用在类声明或者类表达式中来创建一个继承了某个类的子类。

class Animal {
    constructor(name) {
        this.name = name;
    }
    speak() {
        console.log(this.name   ' makes a noise.');
    }
}
class Dog extends Animal {
    speak() {
        console.log(this.name   ' barks.');
    }
}
var d = new Dog('Mitzie');
d.speak();// 'Mitzie barks.'

//同样也可以用于原有的原型继承的“类”:
function Animal2 (name) {
    this.name = name;
}
Animal2.prototype.speak = function () {
    console.log(this.name   ' makes a noise.');
}
class Dog2 extends Animal2 {
    speak() {
        super.speak();
        console.log(this.name   ' barks.');
    }
}
var d2 = new Dog2('Mitzie');
d2.speak();

//需要注意的是类不能继承一般(非构造的)对象。如果你想要创建的类继承某个一般对象的话,你要使用 Object.setPrototypeOf():
var Animal3 = {
    speak() {
        console.log(this.name   ' makes a noise.');
    }
};
class Dog3 {
    constructor(name) {
        this.name = name;
    }
    speak() {
        super.speak();
        console.log(this.name   ' barks.');
    }
}
Object.setPrototypeOf(Dog3.prototype, Animal3);
var d3 = new Dog3('Mitzie');
d3.speak();
class Animal {
    constructor(){
        this.type = 'animal'
    }
    says(say){
        console.log(this.type   ' says '   say)
    }
}

let animal = new Animal()
animal.says('hello') //animal says hello

class Cat extends Animal {
    constructor(){
        super()
        this.type = 'cat'
    }
}

let cat = new Cat()
cat.says('hello') //cat says hello
  ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。

  部分来自JavaScript ES6 class指南、mozilla  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Classes

地方代码首先用class定义了二个“类”,能够看出里边有2个constructor方法,那就是构造方法,而this关键字则意味着实例对象。轻松地说,constructor钦点义的措施和性格是实例对象本身的,而constructor外定义的不二秘诀和属性则是富有实例对象足以共享的。

匿名的

var Polygon1 = class {
    constructor(height, width) {
        this.height = height;
        this.width = width;
    }
};

本文由68399皇家赌场发布于最新解决方案,转载请注明出处:澳门皇家娱乐场es6基础语法

关键词: 68399皇家赌场 es6 语法

频道精选

最火资讯