js并不是真正面向对象的语言,但是我们通过一些方法也是可以实现js的一些面向对象设计的。常见的构造函数有很多模式有构造函数模式,原型链,工厂模式等等。但就是因为,我初学者看起来非常吃力,理解起来都是很困难,在此推荐一种比较常见的模式--组合模式:
//定义一个person类
function person(name,age,job){
//js里无论什么类型都是function
this.name=name;//定义变量每个实例单独存在的
this.age=age;
this.job=job;
}
person.prototype={
//公共方法(引用的是同一个地址,所有通过prototype引用的类型也被称为原型方法,是每个实例都会存在的方法)
constructor:person,
sayName:function(){alert(this.name)}
};
var person1=new person("小任",23,"web前端工程师");
var person2=new person("乐乐",26,"硬件工程师");
alert(person1.sayName()+"and"+person2.sayName());//小任and乐乐
解释:在以上代码中person.prototype={}(在这里person.prototype={}是被重写掉的。需要重新指定一下他的构造函数,不然在默认的情况下person.prototype是自己制定person的。当然如果嫌弃麻烦的话可以直接定义:person.prototype.sayName=function(){alert(this.name)});