面向对象:即表示客观世界问题空间(Namespace)中的某个具体事物,也表示软件系统解空间中的基本元素。它包括属性(properties)和方法(methods),属性就是需要记忆的信息,方法就是对象能够提供的服务。在面向对象(object oriented)的软件中,对象(object)是某一个类(class)的实例(instance)。
function People(name){
this.name = name;
this.printName = function(){
console.log(name);
};
}
这是一个函数,也是对象,我们称之为类(class)。
var p1 = new People('Byron');
p1是people类(class)new出来的对象,我们称之为实例。
面向对象编程的特点:抽象、封装,继承。
抽象:抓住核心问题;
封装:不考虑内部实现,只考虑功能使用;
继承:从已有对象上,继承出新的对象。继承分为多重继承、多态。
构造器:每个构造器实际上就是一个函数(function)对象,该函数对象含有一个‘prototype’属性用于实现基于原型的继承(prototype-based inheritance)和共享属性(shared propertues)。对象可以由(‘new 关键字’+构造器调用)的方式创建。
原型(prototype):在ECMAscript中,每个由构造器创建的对象拥有一个指向构造器prototype属性值的隐世引用(implicit reference)。
原型链(prototype chain):每个原型可以拥有指向自己原型的隐式引用(即该原型的原型),如此下去(new Object(null)是没有原型链的)。