原型继承

被面试官问得一脸懵逼,心塞。

  • Q1:什么是原型继承?
  • Clue:
  • 摒弃类而专注于对象;
  • 一个新对象可以继承一个旧(已有)对象的属性;
  • 差异化继承
  • 通过指明新对象与其所基于的基本对象之间的区别实现新对象的定制;
  • Q2:为什么要使用原型继承?
  • Clue:
  • 在基于类的语言中,继承提供了两个有用的服务:
    • 首先,继承是代码重用的一种形式,可以显著地减少开发成本;
    • 其次,继承规范了类型系统,使开发者无需显示进行类型转换,因为类型转换会丧失类型系统在安全上的优势(?);
  • 使用继承往往是希望获得向上转换特性所提供的灵活性,对这种特性有所需求的往往是强类型语言;
  • JavaScript中没有静态类型检查的约束,无需显示定义类型,它不需要频繁地进行类型转换以获得想要的行为,因而对象继承对其来说无关紧要;
  • Q3:为什么不直接在构造器函数中直接构建需要的类型/对象?
  • Clue:
  • 直接在构造器函数中简单实现类型或者对象的话根本没有实现代码复用的目标;
  • JavaScript中不提供访问控制,在构造器中直接声明的属性和方法都是对外公开的,可以轻易地进行访问甚至修改;

你可能感兴趣的:(原型继承)