麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

JavaScript面向對象之對象創建

2019-11-06 06:38:11
字體:
來源:轉載
供稿:網友

1.創建對象:

var person = new Object();person.name = "zhangsan";person.age = 30;person.job = "software engineer";person.sayName = function(){	alert(this.name);}person.sayName();

缺點:創造不同的對象需要大量重復的代碼。

2.工廠模式:

function createObject(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 = createObject("zhangsan",20,"teacher");var person2 = createObject("lisi",30,"doctor");person1.sayName();person2.sayName();

缺點:無法判斷對象的類型。alert(typeof person1);alert(person1instanceof Object);

3.構造函數模式:

(1)

function Person(name,age,job){				this.name = name;	this.age = age;	this.job = job;	this.sayName = function (){		alert(this.name);	};				}var person1 = new Person("zhangsan",20,"teacher");var person2 = new Person("lisi",30,"doctor");person1.sayName();person2.sayName();alert(person1.sayName == person2.sayName);

缺點:sayName方法執行同樣的任務,但創建不同的對象時卻要不同的Function。

(2)
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("zhangsan",20,"teacher");var person2 = new Person("lisi",30,"doctor");person1.sayName();person2.sayName();alert(person1.sayName == person2.sayName);

缺點:(2)雖然解決了(1)的問題,但sayName是一個全局函數,卻只能被某個對象使用。如果對象由很多方法,就要定義很多全局函數,破壞了函數的封裝性。

4.原型模式:

(1)

function Person(){	}Person.PRototype.name = "zhangsan";Person.prototype.age = 30;Person.prototype.job = "teacher";Person.prototype.sayName = function(){	alert(this.name);};		var person1 = new Person();person1.sayName();var person2 = new Person();person2.sayName();alert(person1.sayName == person2.sayName);(2)
function Person(){	}Person.prototype = {	name:"zhangsan",	age:30,	job:"teacher",	friends:["lisi","wangwu"],	sayName:function(){		alert(this.name);	}};		var person1 = new Person();var person2 = new Person();person1.friends.push("zhaoliu");alert(person1.friends);alert(person2.friends);alert(person1.friends == person2.friends);

缺點:由(2)可以看出原型的缺點,由于共享的特性,在使用基本類型時可以使用隱藏的手段解決,引用類型會造成共享問題。

5.組合構造函數模式和原型模式

function Person(name,age,job){	this.name = name;	this.age = age;	this.job = job;	this.friends = ["wangwu","zhaoliu"];	}Person.prototype = {	constructor:Person,	sayName: function(){		alert(this.name);	}};		var person1 = new Person("zhangsan",20,"teacher");var person2 = new Person("lisi",30,"doctor");person1.friends.push("liuqi");alert(person1.friends);alert(person2.friends);alert(person1.friends == person2.friends);alert(person1.sayName == person2.sayName);6.動態原型模式
function Person(name,age,job){	this.name = name;	this.age = age;	this.job = job;	this.friends = ["wangwu","zhaoliu"];	if(typeof this.sayName != "function"){		Person.prototype.sayName = function (){			alert(this.name);		};	}	}		var person1 = new Person("zhangsan",20,"teacher");var person2 = new Person("lisi",30,"doctor");person1.friends.push("liuqi");alert(person1.friends);alert(person2.friends);alert(person1.friends == person2.friends);alert(person1.sayName == person2.sayName);7.寄生構造函數模式:

function Person(name,age,job){	var o = new Object();	o.name = name;	o.age = age;	o.job = job;	o.friends = ["wangwu","zhaoliu"];	o.sayName = function (){		alert(this.name);	};	return o;}		var person1 = new Person("zhangsan",20,"teacher");var person2 = new Person("lisi",30,"doctor");person1.friends.push("liuqi");alert(person1.friends);alert(person2.friends);alert(person1.friends == person2.friends);alert(person1.sayName == person2.sayName);8.穩妥構造函數模式:

function Person(name,age,job){	var o = new Object();				o.sayName = function (){		alert(name);	};	return o;}		var person = Person("zhangsan",20,"teacher");person.sayName();特點:與寄生構造函數模式相似,不同點在于一是不使用new調用構造函數,二是在創建對象的實例方法中不使用this.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产电影av在线 | v11av在线视频成人 | 狼伊千合综网中文 | 久久国产精品久久久久久电车 | 久草视频国产在线 | 蜜桃视频最新网址 | 黄色aaa视频| 一区二区久久电影 | 日韩中文字幕三区 | 久久久久国产成人精品亚洲午夜 | 欧美精品免费一区二区三区 | 国产女做a爱免费视频 | 在线亚洲综合 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 国产亚洲精品久久久久久久 | 一级黄色淫片 | 国产精品久久久av | 欧美一级电影网站 | 免费国产一级淫片 | 免费一级高清毛片 | 高颜值美女啪啪 | 亚洲va久久久噜噜噜久牛牛影视 | 国产福利视频在线观看 | 国产精品久久久久影院老司 | 黑人一级片视频 | 中文字幕精品在线播放 | 午夜精品福利在线观看 | 国产做爰全免费的视频黑人 | 嫩草影院在线观看网站成人 | 亚洲精品无码不卡在线播放he | 亚洲成人精品一区二区 | 美女黄影院 | 九九热在线免费观看视频 | 久久亚洲成人 | 久久久日韩av免费观看下载 | 成人黄色网战 | 男女无遮挡羞羞视频 | 成人一级黄色 | 在线成人免费av | 高潮激情aaaaa免费看 | 91真视频|