对象、原型

OOP 指什么?有哪些特性 (难度: ***)

  • 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。
  • 封装:能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。具备封装性(Encapsulation)的面向对象程序设计隐藏了某一方法的具体运行步骤,取而代之的是通过消息传递机制发送消息给它。封装是通过限制只有特定类的对象可以访问这一特定类的成员,而它们通常利用接口实现消息的传入传出。
  • 继承:可以使用现有类的功能,并且可以在不重新编写原来类的情况下,进行扩展。
  • 多态: 是指由继承而产生的相关的不同的类,其对象对同一消息会做出不同的响应
  • 抽象: 简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释问题。

如何通过构造函数的方式创建一个拥有属性和方法的对象? (难度: ***)


核心为:

var xxx = new function()

prototype 是什么?有什么特性 (难度: ***)

  • 所有函数都有 prototype
  • 对象.proto === 构造函数.prototype

函数可以通过prototype这个属性创建一个公共区域,此函数构造的对象都可以通过它们的proto属性访问到这个公共区域

画出如下代码的原型图 (难度: ****)

function People (name){
  this.name = name;
  this.sayName = function(){
    console.log('my name is:' + this.name);
  }
}

People.prototype.walk = function(){
  console.log(this.name + ' is walking');  
}

var p1 = new People('饥人谷');
var p2 = new People('前端');

以下代码中的变量age有什么区别(难度: ****)

function People (){
  var age = 1;//局部变量
  this.age = 10;//为构造对象中的age
}
People.age = 20;//函数自身的属性age

People.prototype.age = 30;//函数的原型age

推荐阅读更多精彩内容