ES6学习笔记—Class基本语法

1、引言

JavaScript是一门基于原型继承的语法,ES5中我们实现面向对象构造“父类”的写法一般通过构造函数写入基本属性、通过原型prototype写入基本的方法,下面是一个例子
demo

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可以看作一个语法糖,ES6中引入的新属性class,通过class可以让对象原型的写法更加清晰、更像面向对象编程的语法而已,上面的例子通过ES6的class改写,

//定义一个Point类
class Point {
  constructor(x,y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}
  • 严格模式
    类和模块的内部,默认就是严格模式,因而不需要使用use strict指定运行模式。当我们将代码写在类和模块之中,就只有严格模式可用

2、类的实例对象

当我们生成类的实例对象的写法,与ES5完全一样,即使用new命令,实例的属性除显式定义在本身(定义this对象),否则定义在原型上(定义在class上),下面写一个例子

//定义类
class Point {

  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }

}

var point = new Point(2, 3);

point.toString() // (2, 3)

//检验实例的对象继承的属性在本身还是原型对象上
point.hasOwnProperty('x') // true
point.hasOwnProperty('y') // true
point.hasOwnProperty('toString') // false
point.__proto__.hasOwnProperty('toString') // true
  • 与ES5一样,类的所有实例共享一个原型对象,demo测试如下
var p1 = new Point(2,3);
var p2 = new Point(3,2);

p1.__proto__ === p2.__proto__     //true

3、私有方法和私有属性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • class的基本用法 概述 JavaScript语言的传统方法是通过构造函数,定义并生成新对象。下面是一个例子: ...
    呼呼哥阅读 4,147评论 3 11
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 1,601评论 0 8
  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 1,184评论 0 3
  • 以下内容是我在学习和研究ES6时,对ES6的特性、重点和注意事项的提取、精练和总结,可以做为ES6特性的字典;在本...
    科研者阅读 3,182评论 2 9
  • 醉倚阑干,懒对镜梳妆。晨起推窗,惊见初雪上。 素缕渺渺,烟纱笼末梢。眉眼儿翘,极目云天眺。
    石衡阅读 256评论 0 0