發(fā)文章
發(fā)文工具
撰寫
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊(cè)
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
[html] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www./1999/xhtml"> <head> <title></title> </head> <body> <script type="text/javascript"> //1.創(chuàng)建Object,為其添加屬性方法 var person = new Object(); person.name = "Nicholas"; person.age = 29; personal.job = "Software Engineer"; personal.sayName = function () { alert(this.name); }; /* 缺點(diǎn):使用一個(gè)接口創(chuàng)建很多對(duì)象,會(huì)產(chǎn)生大量重復(fù)代碼 */ //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; } /* 工廠模式解決了對(duì)象相似問題,卻沒有解決對(duì)象識(shí)別問題(怎樣知道一個(gè)對(duì)象的類型) */ //3.構(gòu)造函數(shù)模式 function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = function () { alert(this.name); }; } /* 構(gòu)造函數(shù)模式?jīng)]有顯式的創(chuàng)建對(duì)象,直接將方法和屬性賦給了this對(duì)象,沒有return語句 要?jiǎng)?chuàng)建Person的新實(shí)例,必須使用new操作符,實(shí)際經(jīng)歷4個(gè)步驟 a.創(chuàng)建一個(gè)新對(duì)象 b.將構(gòu)造函數(shù)的作用域賦給新對(duì)象(this指向這個(gè)新對(duì)象) c.執(zhí)行構(gòu)造函數(shù),為新對(duì)象添加屬性 d.返回新對(duì)象 構(gòu)造函數(shù)模式創(chuàng)建的對(duì)象可以識(shí)別其類型,但每個(gè)方法都要在每個(gè)實(shí)例上重建一遍 */ //創(chuàng)建兩個(gè)實(shí)例,創(chuàng)建兩個(gè)相同的方法沒必要,可以把函數(shù)定義轉(zhuǎn)到方法外部 function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = sayName; } function sayName() { alert(this.name); } /* 這樣解決了兩個(gè)方法做同一件事的的問題,但在全局作用域上定義的函數(shù)只能被某個(gè)對(duì)象調(diào)用,如果對(duì)象定義需要很多方,就要定義很多全局函數(shù),自定義的引用類型就沒有封裝 性了 */ //4.原型模式 function Person() { } Person.prototype.name = "Nocholas"; Person.prototype.age = 29; Person.prototype.job = "Software Engineer"; Person.prototype.sayName = function () { alert(this.name); } /* 原型模式所有參數(shù)默認(rèn)取得相同的值,屬性若為引用類型,多個(gè)實(shí)例之間互相影響 */ //5.構(gòu)造函數(shù)原型混合模式 function Person(name, age, job) { this.name = name; this.age = age; this.job = job; } Person.prototype.sayName = function () { alert(this.name); } /* 構(gòu)造函數(shù)用于定義實(shí)例屬性,原型用于定義方法和共享屬性,。eigenvalue實(shí)例都會(huì)有一份自己實(shí)例屬性的副本,同時(shí)享用著對(duì)共享方法的引用 */ </script> </body> </html>
來自: posondlq > 《Javascript》
0條評(píng)論
發(fā)表
請(qǐng)遵守用戶 評(píng)論公約
Javascript構(gòu)建相似對(duì)象
每次創(chuàng)建一個(gè)新對(duì)象都會(huì)創(chuàng)建一個(gè)新的sayName對(duì)象(Function對(duì)象的實(shí)例):如果方法定義構(gòu)造函數(shù)外部如下:function Person(name,age,job){ this.name=name; this.age=age;ths.job=job;this.sayName=sayN...
JS 創(chuàng)建對(duì)象(常見的幾種方法)
ansel.sayName();還有一種辦法是利用無敵的this,因?yàn)閠his就表示當(dāng)前運(yùn)行時(shí)的對(duì)象,將構(gòu)造函數(shù)this的作用域指向新對(duì)象,將當(dāng)前運(yùn)行對(duì)象的屬性和方法都賦給新對(duì)象,這樣對(duì)象模式稱為構(gòu)造函數(shù)模式 復(fù)制代...
javascript 創(chuàng)建對(duì)象的幾種方式
var person1 = new Person();function Person(name, age, job){ //屬性 this.name = name; this.age = age; this.job = job; //方法 if (typeof this.sayName != ...
JavaScript創(chuàng)建對(duì)象的方式!
friends存在與原型中,實(shí)例person1和person2指向同一個(gè)原型,person1修改了引用的數(shù)組,也會(huì)反應(yīng)到實(shí)例person2中4、組合使用構(gòu)造函數(shù)模式和原型模式。person1.friends.push(''Van'')co...
創(chuàng)建object對(duì)象的幾種方法,以及存值取值
// 創(chuàng)建空對(duì)象var obj = {}; // 存值兩種方式obj[name] = "張三豐";obg.name = "張三豐";// 取值兩種方式var name =obj.name;var name = obj[name];function Person(name,colo...
深入理解JavaScript面向?qū)ο蟮某绦蛟O(shè)計(jì)(一)——對(duì)象的創(chuàng)建
function Person () {}Person.prototype.name = "Jack"Person.prototype.age = 26Person.prototype.job = "Software Eng...
JavaScript 面向?qū)ο缶幊趟枷牒?jiǎn)介
根據(jù)模板創(chuàng)建具體實(shí)例對(duì)象(Instance):面向?qū)ο蟮脑O(shè)計(jì)思想是從自然界中來的,因?yàn)樵谧匀唤缰校悾–lass)和實(shí)例(Instance)的概念是很自然的。Class 是一種抽象概念,比如我們定義的 Class——Stud...
Javascript之面向?qū)ο蟪绦蛟O(shè)計(jì)(一)
javascript 面向?qū)ο螅▽?duì)象的創(chuàng)建方式ES3)
function createPerson(name,age){obj.name=name;obj.sayName= function(){function Person(name,age){this.sayName=function(){Person....
微信掃碼,在手機(jī)上查看選中內(nèi)容