首页 > 其他 > 详细

创建对象的几种方式

时间:2016-01-12 19:44:30      阅读:177      评论:0      收藏:0      [点我收藏+]

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>创建对象的几种方式</title>

<style>


</style>


</head>

<body>

<script>

//简单创建对象

var person = new Object();

person.name = "nicholas";

person.age = 23;

person.job = "IT";

person.sayName = function(){

alert(this.name);

};

person.sayName();

//字面量

var person = {

name : "nicholas",

age : 23,

job : "IT",

sayName : function(){

alert(this.name);

}

};

person.sayName();// nicholas

//工厂模式

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;

}


person1 = createPerson("nicholas", 20, "IT");

person1.sayName();

person2 = createPerson("blue", 23, "HR");

person2.sayName();


//构造函数模式

function Person(name, age, job){

this.name = name;

this.age = age;

this.job = job;

this.sayName = sayName;

}


function sayName(){

alert(this.name);

}


var person1 = new Person("nicholas", 20, "IT");

person1.sayName();

var person2 = new Person("gred", 22, "HR");

person2.sayName();


//原型模式

function Person(){};

Person.prototype.name = "nicholas";

Person.prototype.age = 20;

Person.prototype.job = "IT";

Person.prototype.sayName = function(){

alert(this.name);

};


var person1 = new Person()

person1.sayName();

var person2 = new Person();

person2.sayName();

alert(person1.sayName == person2.sayName);


//原型模式- 简化

function Person(){};

Person.prototype = {

name : "nicholas",

age : 20,

job : "IT",

sayName : function(){

alert(this.name);

}

};


var person1 = new Person();

person1.sayName();

var person2 = new Person();

person2.sayName();


//组合使用构造模式和原型模式

function Person(name, age, job){

this.name = name;

this.age = age;

this.job = job;

this.friends = ["xiaoming","daming"];

}

Person.prototype = {

constructor : Person,

sayName : function(){

alert(this.name);

}

}

var person1 = new Person("nicholas", 20, "IT");

person1.sayName();//nicholas

person1.friends.push("Van");

alert(person1.friends);//xiaoming,daming,Van

var person2 = new Person("blue", 22, "HR");

person2.sayName();//blue

alert(person2.friends);//xiaoming,daming


//动态原型模式

function Person(name, age, job){

this.name = name;

this.age = age;

this.job = job;

if (typeof this.sayName != "function") {

Person.prototype.sayName = function(){

alert(this.name);

};

}

}

var friends = new Person("nicholas", 20, "IT");

friends.sayName();


//寄生构造函数模式

function Person(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 = new Person("nicholas", 20, "IT");

person1.sayName();


//稳妥模式

function Person(name, age, job){

var o = new Object();

o.name = name;

o.sayName = function(){

alert(name);

};

return O;

}

var person1 = new Person("nicholas", 20, "IT");

person1.sayName();

</script>

 

</body>

</html>


创建对象的几种方式

原文:http://iicoo.blog.51cto.com/10739372/1734257

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!