最近看书在看js的面向对象技术,学习到几种写法
//对象字面量语法
var person = {
name :"hyr",
age : 22,
job :"Engineer",
sayName : function(){
alert(this.name);
}
}
//1.工厂模式
function createPerson(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name);
}
return o;
}
var person1 = createPerson("hyr",22,"Engineer");
var person2 = createPerson("xcx",22,"Engineer");
console.log(person1)
//2.构造函数模式
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(this.name);
}
}
var person3 = new Person("hyr",23,"Engineer");
var person4 = new Person("xcx",23,"Engineer");
//当做构造函数调用
person3.sayName();
//当做普通函数调用
Person("小明",22,"Engineer");
window.sayName();
//在另一个对象的作用域中调用
var o = new Object();
Person.call(o,"小糯米",25,"Engineer");
o.sayName();
//3.原型模式
function Person1(){}
Person1.prototype.name = "zhuzhu";
Person1.prototype.age = 22;
Person1.prototype.job = "Engineer";
Person1.prototype.sayName = function(){
alert(this.name);
};
var person5 = new Person1();
person5.sayName();