概述
面向对象的语言有一个标志,那就是他们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。
对象的创建
1、工厂模式
//工厂模式
function getPerson(name,age){
//定义age不能直接访问
var person = {
name:name,
_age:age,
getName:function(){
return this.name;
}
};
Object.defineProperties(person,{
_age:{
value:age
},
age:{
get:function(){
return this._age;
},
set:function(age){
this._age = age;
}
}
});
return person;
}
var p2 = getPerson("person2",12);
console.log(p2.getName());
2、构造函数模式
//构造函数模式
function Person(name,age){
this.name = name;
this.age = age;
this.getName = getName;
}
var p1 = new Person("person1",12);
console.log(p1.getName());
3、原型模式
//原型模式
function People(){};
People.prototype = {
name:"",
age:0,
getName:getName
}
var p3 = new People();
p3.age = 12;
p3.name="person3";
console.log(p3.getName());
console.log("sex" in p3);
4、构造函数+原型
//*构造函数+原型模式*//
function Student(name,age){
this.name = name;
this.age = age;
}
Student.prototype ={
constructor:Student,
getName:getName
}
var stu = new Student("student",18);
console.log(stu.getName());