面向對象的語言有一個標誌,那就是他們都有類的概念,通過類可以創建任意多個具有相同屬性和方法的對象。
但是在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);