JS面对对象基础
开篇我们先明确几个概念:
构造函数:函数中的一种,通过关键字new可以创建其实例。为了便于区分,通常首字母大写;
原型对象:一种特殊的对象,构造函数创建时即自动生成;与构造函数形成一一对应,如同人和影子般的关系;
实例:通过构造函数new实例化出来的对象;
创建对象的方式
1】new 操作符 + Object 创建对象
var person = new Object();
person.name = "lisi";
person.age = 21;
person.family = ["lida","lier","wangwu"];
person.say = function(){
alert(this.name);
}
这种方式直接使用Object类对象来创建实例,会产生很多重复代码。
2】字面式创建对象
var person = {
name: "lisi"
age: 21,
family: ["lida","lier","wangwu"],
say: function(){
alert(this.name);
}
};
使用js对象字面量创建实例对象,同理也会产生很多重复代码。
3】工厂模式
在上面 new Object类对象的方式 和 字面式的方式 的基础上诞生了工厂模式,可以创建多个类似对象,减少重复代码。但是无法识别对象类型功能。(因为创建出来的实例对象都是基于Object类对象直接创建的,原型链上只有Object对象)
function createPerson(name,age,family){
var o = new Object()
o.name = name
o.age = age
o.family = family
o.say = function(){
alert(this.name);
}
return o
}
var person1 = createPerson("lisi",21,["lida","lier","wangwu"]);
//instanceof无法判断它是谁的实例,只能判断他是对象,构造函数都可以判断出
var person2 = createPerson("