面向对象的语言有一个标志,那就是他们都有类的概念,通过类可以创建任意多个具有相同属性和方法的对象。
但是在ECMAScript中没有类的概念,但是我们可以通过其他方式来模拟面向对象的类。
工厂模式:工厂模式是软件工厂领域中一种广为人知的设计模式。构造函数模式:比如像ECMAScript中的Array、Object、Date等都是通过构造函数来创建的。
//1.工厂模式
function Person(name,age,sex){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.sex = sex;
obj.sayName = function(){
console.log(this.name);
}
return obj;
}
var p = Person('小一',20,'男');
console.log(p.age);
p.sayName();
//2.构造函数模式
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.sayName = function(){
console.log(this.sex);
}
}
var p = new Person('小儿',25,'女');
console.log(p.age);
p.sayName();
//3.js的方式创建对象方式
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.sayName = function(){
console.log(this.sex);
}
}
//1.当作构造函数去使用
var obj = new Person('小儿',25,'女');
console.log(obj.sex);
//2.当作一个普通函数去调用
Person('小儿',25,'女'); //在全局环境里定义属性并赋值,直接定义在window上
console.log(name);
//3.利用call apply方式
var o = new Object();
Person.call(o,'老大',123,'男');
console.log(o.age);