类成员 与 实例成员
类成员属于类,而不属于具体的实例。实例成员在每个实各自独享一份
例:在下面的例子中,count代表班级人数 是类成员,name是实例成员
function Student(name){
this.name = name;
}
Student.count = 30;
var lk = new Student("Likang");
lk.name;
Student.count
类和原型
“原型” 这个词本身源自心理学,指神话、宗教、梦境、幻想、文学中不断重复出现的意象,它源自民族记忆和原始经验的集体潜意识。所以,原型是一种抽象,代表事物表象之下的联系。用简单的话来说,就是原型描述事物与事物之间的相似性。
原型继承
原型可以通过描述两个事物之间的相似关系来复用代码,我们可以把这种复用代码的模式称为原型继承。
使用prototype属性实现对象的继承
function Cat(){ } //小猫喵喵叫 Cat.prototype.say = function(){ return "喵"; } //小猫会爬树 Cat.prototype.climb = function(){ return "我会爬树"; } function Tiger(){ } Tiger.prototype = new Cat(); //老虎的叫声和小猫不同,但老虎也会爬树 Tiger.prototype.say = function(){ return "嗷"; }
类继承
- 用分类和归类的认知方式去认知事物
class Animal{ eat(){} say(){} climb(){} ... } class Cat extends Animal{ say(){return "喵"} } class Dog extends Animal{ say(){return "汪"} }
原型继承和类继承是两种不同的认知模式,原型继承在对象不是很多的简单应用模型里比类继承更加灵活方便。
面向对象的特点
- 封装。把相关的信息(无论数据或方法)存储在对象中的能力。
- 继承。由另一个类(或多个类)得来类的属性和方法的能力。
- 多态。编写能以多种方法运行的函数或方法的能力。