this与class(原型)

class :类,是对象的模板。(或者叫:原型) this :当前对象。 以上定义,与 java 中的概念是相同的。 但是,由于 javascript 语言自身的特点,关于 class this ,还需要做进一步说明。

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

属性与方法添加到this

class  Point {

    constructor() { }}let p = new Point();

p.username = 'zhangsan';

console.log(p.username);    //zhangsan

上面代码中,Point 类定义之后,给对象 p 又添加了一个 username 属性。跟单网www.gendan5.com这是完全可以的。 但是要注意:此种方式,仅仅是给对象 p 添加一个属性,而不是给类添加一个属性。 或者说: 此种方式,仅仅是给对象 p this 添加一个属性,而不是给类添加一个属性。

class Point {

    constructor() { }}let p1 = new Point();

p1.username = 'zhangsan';

console.log(p1.username);   //zhangsan

let p2 = new Point();

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

上面例子中,只给对象p1 添加了 username 属性,但没有给类添加属性。 所以, p2 对象中并没有 username 属性。

属性与方法添加到类上

class Point {

    constructor() { }}

Point.prototype.username = 'zhangsan';

let p1 = new Point();

console.log(p1.username);   //zhangsan

let p2 = new Point();

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

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

javascript 中,每一个类都有一个 prototype ,它就是类的原型,类的所有实例共享一个原型。如果想访问这个原型,可以使用 proto 指针。

样例代码:


请使用浏览器的分享功能分享到微信等