类和实例
类与实例是“抽象”和“具体”的关系,比如:“大楼”和“火星时代大厦”
类
每个对象都由类定义,可以把类看做对象的配方。类不仅要定义对象的接口(开发者访问的属性和方法),还要定义对象的内部工作(使属性和方法发挥作用的代码)。编译器和解释器都根据类的说明创建对象。
实例
程序使用类创建对象时,生成的对象叫做实例。一个类可以产生多个实例,没有个数限制。每个实例处理一组独立的数据,由类创建实例的过程称为实例化。
类的创建
用“工厂方法”创建类
function PersonFactory(name,age,sex,isHealth){ var person = new Object(); person.name = name; person.age = age; person.sex = sex; person.isHealth = isHealth; return person; } //实例化对象 var person_zzy = PersonFactory("章子怡",34,"女",true); var person_hxm = PersonFactory("黄晓明",40,"男",false); //简写方式 function PersonFactory(name,age,sex,isHealth){ return { name:name, age:age, sex:sex, isHealth:isHealth, }; }
用构造函数方式创建类
//创建person类
var person = function(name,age,sex,isHealth){
this.name = name;
this.age = age;
this.sex = sex;
this.isHealth = isHealth;
this.sayName = function(){
console.log("my name is:" + this.name);
}
}
//由person类生成实例
var person_zzy = new person("章子怡",34,"女",true);
var person_hxm = new person("黄晓明",40,"男",false);
用prototype方式创建类
prototype 属性使您有能力向对象添加属性和方法。
//定义一个空的类person function person(){} //用prototype方式类添加属性和方法,同时实例化 var person_zzy = new person(); person.prototype.name = null; person.prototype.sex = null; person.prototype.age = null; person.prototype.sayName = function(){ console.log("my name is:"+this.name); } person_zzy.name = "章子怡"; person_zzy.sex = "女"; person_zzy.age = 34;
实例与对象是一回事,所谓实例化,就是类生成对象的过程
this是javasctipt中的一个关键字,代表当前对象
instanceof运算符
instanceof运算符可以用来判断某个构造函数的prototype属性是否存在另外一个要检测对象的原型链上
A instanceof B:检测 B.prototype属性是否存在于参数A的原型链上
function person(){
}
var person_zzy = new person();
console.log(person_zzy instanceof person); //true