ES6 语法基础3--面向对象

5. 面向对象编程

5.1 ES5面向对象编程

a. 构造函数

var Vehicle = function () {
  this.price = 1000;
};

构造函数就是一个普通的函数,但是有自己的特征和用法****:

  • 构造函数名字的第一个字母通常大写
  • 函数体内部使用了this关键字,代表了所要生成的对象实例。
  • 构造函数不可以有返回值
  • 生成对象的时候,必须使用new命令。
var v = new Vehicle();
v.price // 1000

b. this使用场景

(1)全局环境

全局环境使用this,它指的就是顶层对象window。

(2)构造函数

构造函数中的this,指的是实例对象。

(3)对象的方法

对象方法中使用this非常乱,初学者不建议使用

c. 继承

JavaScript 语言的继承是通过“原型对象”(prototype)实现的

function Animal(name) {
  [this.name](http://this.name/) = name;
}

Animal.prototype.color = 'white';

var cat1 = new Animal('大毛');
var cat2 = new Animal('二毛');
cat1.color // 'white'
cat2.color // ‘white'

JavaScript 继承机制的设计思想就是,原型对象的所有属性和方法,都能被实例对象共享。也就是说,如果属性和方法定义在原型上,那么所有实例对象就能共享,不仅节省了内存,还体现了实例对象之间的联系

构造函数Animal的prototype属性,就是实例对象cat1和cat2的原型对象。原型对象上添加一个color属性,结果,实例对象都共享了该属性

JS关于原型和继承有无数种写法,我们尽量统一使用如下方法

继承示例:

//父类

function Shape() {
  this.x = 0;
  this.y = 0;
}

Shape.prototype.move = function (x, y) {
  this.x += x;
  this.y += y;
  [console.info](http://console.info/)('Shape moved.');
};

//子类继承
// 第一步,子类继承父类的实例
function Rectangle() {
  Shape.call(this); // 调用父类构造函数
}

// 第二步,子类继承父类的原型
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle;

使用:

var rect = new Rectangle();
rect.move(1, 1) // 'Shape moved.'
rect instanceof Rectangle  // true
rect instanceof Shape  // true

5.2 ES6面向对象编程

a. Class

//定义类

class Point {
  myProp = 42;
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}

b. 静态方法与继承:

class Foo {
  static classMethod() {
    return 'hello';
  }
}

class Bar extends Foo {
  static classMethod() {
    return super.classMethod() + ', too';
  }
}

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

推荐阅读更多精彩内容

  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 6,416评论 0 6
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 5,276评论 3 12
  • 昨天晚上听了一遍光明与黑暗的音频,然后要求听了第二遍,手里正好有电筒,拿着对着水晶灯晃啊晃 今天做完作业,问还记得...
    紫叶1981阅读 1,950评论 0 0
  • 架一叶舟,栽一朵花,捧一席莲,戴一顶荷叶,游万亩龙湖。 三次建国、五次建都, 素有“中国的历史,一千年看北京,三千...
    广电1701B杨敏芳阅读 2,548评论 0 0
  • 上回我们讲到了基础的图片的URL的获取——Python之Instagram图片爬虫(一),这回将要讲的就是获取加载...
    浅浅的笑意阅读 11,382评论 0 11