es6中的class

注意:生成类的实例对象的写法,要使用new命令。如果忘记加上new,像ES5函数那样调用Class,将会报错。

// 报错

let point = Point(2,3);

// 正确

let point = new Point(2,3);

2. 类中constructor方法–构造方法
  • 构造方法时类中默认的方法,通过new命令生成对象实例时,自动调用该方法,且一个类必须要有constructor方法,如果没有显示定义,一个空的constructor方法会被默认添加。

constructor() {}

注意:constructor方法默认放回实例对象(即this),也可以返回指定的对象

实例代码:

Constructor与普通构造函数的区别: 类的构造函数,不使用new是没法调用的,会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。

class Point {

constructor(x, y) {

this.x = x;

this.y = y;

}

toString() {

return ‘(’ + this.x + ', ’ + this.y + ‘)’;

}

}

let p = Point(); //TypeError: Class constructor Point cannot be invoked without ‘new’

注意:在javascript中,在定义类完毕之后,还可以再添加属性和方法。

  • 属性和方法添加到this上(实例对象上)

class Point {

constructor() { }

}

let p = new Point();

p.username = “huanhzhizhen”;

console.log(p.username)

let p2 = new Point();

console.log(p2.username); //undefined

在这里插入图片描述

注意:上代码中,只是给Point类的实例对象p添加了username属性,并不是给类添加一个属性,所以对于实例对象p2是没有username这个属性的!

3. 给类添加属性或是方法

给类添加属性或是方法有两者凡是,一时通过原型的方法,二是直接通过类.属性的方式。

  • 通过原型的方式添加的属性和方法,类的全部实例公用

  • 后者添加的属于类的静态属性,只能通过类访问到

3.1 方式1 通过原型prototype

class Point {

constructor() { }

}

Point.prototype.username = “zhuangzhizhen”;

let p1 = new Point();

console.log(‘p1.username-----’, p1.username)

let p2 = new Point();

console.log(‘p2.username-----’, p2.username)

在这里插入图片描述

上面代码中,使用 Point.prototype方式,给类添加属性。 这样,类的所有对象(p1、p2)就都有username属性了。

在javascript中,每个类都会有一个prototypr,它就是类的原型,类的所有实例共享一个原型,若类的实例想访问该类的原型,可以使用proto指针(这里跟ES5中定义的后遭函数的实例概念相似0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值