《JavaScript高级程序设计》第六章笔记

介绍

这一章主要讲的是在JS中的对于面向对象这一概念是如何实现的。讲到的主要内容有,对象,创建对象,和继承。

对象(Object)

属性类型

  1. 数据属性(Data Properties)
    包括一个数据值
    -
  2. 访问器属性(Accessor Properties):包括getter和setter的pair。

继承(Inheritance)

基本概念

  1. JavaScript只有对象,没有类和接口的概念
  2. 函数也是一种对象。对象的特点:原型,构造器
  3. 构造函数:当调用一个方法的时候,我们使用了new关键字,便说明该函数将被当做构造函数来使用
  4. 所有对象都继承自Object这个对象。

    原型链继承

    实例[内部指针] -> 构造函数[原型对象]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function SuperType() {
    this.property = true;
    this.function = function() {
    return "function supertype";
    }
    }
    function SubType() {}
    SubType.prototype = new SuperType();
    var instance = new SubType();
    var property = instance.property //true
    var value = instance.function; //"function"

缺点

原型的方法和属性会被子类所有的instance共享。

构造函数继承

1
2
3
4
5
6
function SuperType(name) {
this.name = name;
}
function SubType(name) {
SuperType.call(this, name);
}