多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > JS創建自定義對象的幾種常見方式與比較

JS創建自定義對象的幾種常見方式與比較

來源:程序員人生   發布時間:2014-06-19 20:57:33 閱讀次數:3321次

初學JavaScript,正在讀 Nicholas C. Zakas 的《JavaScript高級程序設計》,看到了創建對象,簡單的對書中內容做了一下總結!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
//1.創建Object,為其添加屬性方法
var person = new Object();
person.name = "Nicholas";
person.age = 29;
personal.job = "Software Engineer";

personal.sayName = function () {
alert(this.name);
};

/*
缺點:使用一個接口創建很多對象,會產生大量重復代碼
*/

//2.工廠模式
function createPersonal(name, age, job) {
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function () {
alert(this.name);
};
return o;
}

/*
工廠模式解決了對象相似問題,卻沒有解決對象識別問題(怎樣知道一個對象的類型)
*/

//3.構造函數模式
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function () {
alert(this.name);
};
}

/*
構造函數模式沒有顯式的創建對象,直接將方法和屬性賦給了this對象,沒有return語句
要創建Person的新實例,必須使用new操作符,實際經歷4個步驟
a.創建一個新對象
b.將構造函數的作用域賦給新對象(this指向這個新對象)
c.執行構造函數,為新對象添加屬性
d.返回新對象
構造函數模式創建的對象可以識別其類型,但每個方法都要在每個實例上重建一遍
*/

//創建兩個實例,創建兩個相同的方法沒必要,可以把函數定義轉到方法外部
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = sayName;
}

function sayName() {
alert(this.name);
}

/*
這樣解決了兩個方法做同一件事的的問題,但在全局作用域上定義的函數只能被某個對象調用,如果對象定義需要很多方,就要定義很多全局函數,自定義的引用類型就沒有封裝 性了
*/

//4.原型模式
function Person() {
}

Person.prototype.name = "Nocholas";
Person.prototype.age = 29;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function () {
alert(this.name);
}

/*
原型模式所有參數默認取得相同的值,屬性若為引用類型,多個實例之間互相影響
*/

//5.構造函數原型混合模式
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
}

Person.prototype.sayName = function () {
alert(this.name);
}

/*
構造函數用于定義實例屬性,原型用于定義方法和共享屬性,。eigenvalue實例都會有一份自己實例屬性的副本,

同時享用著對共享方法的引用,目前來看幾乎是最合適的創建對象方式了 */

</script>
</body>
</html>
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
為碼而活
積分:4237
15粉絲
7關注
欄目熱點
關閉
程序員人生
主站蜘蛛池模板: 国产福利在线网址成人 | 最新日韩精品 | 欧美videos粗暴高清性 | 久久综合九色综合桃花 | 中文字幕一区久久久久 | 亚洲欧美视屏 | 欧美在线看片 | 波多野结衣中文字幕2022免费 | 在线免费看网站 | 秋霞特色aa大片在线观看 | 久久999精品 | 日韩亚洲欧美性感视频影片免费看 | www.淫| 自拍偷拍一区 | 另类激情亚洲 | poronovideos德国极品 | 欧亚精品一区二区三区 | 第一国内永久免费福利视频 | 久久男人精品 | 日本免费xxxx色视频 | 亚洲国产成人91精品 | 亚洲免费黄色网址 | 亚洲欧美日韩色 | 日本h片无遮挡在线观看 | 俄罗斯18videosex性欧美成人 | 国产精品www | 久久影视免费观看网址 | 久久亚洲一区二区 | 欧美精品亚洲精品 | 日韩理论片在线观看 | 91av免费观看| 亚洲人网 | 亚洲精品日本 | 一级爱爱| 无遮无挡非常色的视频免费 | 亚洲精品成人在线 | 精品久久久久久综合网 | 亚洲2020 | 亚洲区欧美区小说区图片区 | 中文字幕视频在线观看 | 中文国产成人精品久久一 |