精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
JavaScript創(chuàng)建自定義對(duì)象的幾種常見(jiàn)方式與比較
        初學(xué)JavaScript,正在讀 Nicholas C. Zakas 的《JavaScript高級(jí)程序設(shè)計(jì)》,看到了創(chuàng)建對(duì)象,簡(jiǎn)單的對(duì)書(shū)中內(nèi)容做了一下總結(jié):

[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  1. <html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3.     <title></title>  
  4. </head>  
  5. <body>  
  6.     <script type="text/javascript">  
  7.         //1.創(chuàng)建Object,為其添加屬性方法  
  8.         var person = new Object();  
  9.         person.name = "Nicholas";  
  10.         person.age = 29;  
  11.         personal.job = "Software Engineer";  
  12.   
  13.         personal.sayName = function () {  
  14.             alert(this.name);  
  15.         };  
  16.   
  17.         /*  
  18.         缺點(diǎn):使用一個(gè)接口創(chuàng)建很多對(duì)象,會(huì)產(chǎn)生大量重復(fù)代碼  
  19.         */  
  20.   
  21.         //2.工廠(chǎng)模式  
  22.         function createPersonal(name, age, job) {  
  23.             var o = new Object();  
  24.             o.name = name;  
  25.             o.age = age;  
  26.             o.job = job;  
  27.             o.sayName = function () {  
  28.                 alert(this.name);  
  29.             };  
  30.             return o;  
  31.         }  
  32.   
  33.         /*  
  34.         工廠(chǎng)模式解決了對(duì)象相似問(wèn)題,卻沒(méi)有解決對(duì)象識(shí)別問(wèn)題(怎樣知道一個(gè)對(duì)象的類(lèi)型)  
  35.         */  
  36.   
  37.         //3.構(gòu)造函數(shù)模式  
  38.         function Person(name, age, job) {  
  39.             this.name = name;  
  40.             this.age = age;  
  41.             this.job = job;  
  42.             this.sayName = function () {  
  43.                 alert(this.name);  
  44.             };  
  45.         }  
  46.   
  47.         /*  
  48.         構(gòu)造函數(shù)模式?jīng)]有顯式的創(chuàng)建對(duì)象,直接將方法和屬性賦給了this對(duì)象,沒(méi)有return語(yǔ)句  
  49.         要?jiǎng)?chuàng)建Person的新實(shí)例,必須使用new操作符,實(shí)際經(jīng)歷4個(gè)步驟  
  50.         a.創(chuàng)建一個(gè)新對(duì)象  
  51.         b.將構(gòu)造函數(shù)的作用域賦給新對(duì)象(this指向這個(gè)新對(duì)象)  
  52.         c.執(zhí)行構(gòu)造函數(shù),為新對(duì)象添加屬性  
  53.         d.返回新對(duì)象  
  54.         構(gòu)造函數(shù)模式創(chuàng)建的對(duì)象可以識(shí)別其類(lèi)型,但每個(gè)方法都要在每個(gè)實(shí)例上重建一遍  
  55.         */  
  56.   
  57.         //創(chuàng)建兩個(gè)實(shí)例,創(chuàng)建兩個(gè)相同的方法沒(méi)必要,可以把函數(shù)定義轉(zhuǎn)到方法外部  
  58.         function Person(name, age, job) {  
  59.             this.name = name;  
  60.             this.age = age;  
  61.             this.job = job;  
  62.             this.sayName = sayName;  
  63.         }  
  64.   
  65.         function sayName() {  
  66.             alert(this.name);  
  67.         }  
  68.   
  69.         /*  
  70.         這樣解決了兩個(gè)方法做同一件事的的問(wèn)題,但在全局作用域上定義的函數(shù)只能被某個(gè)對(duì)象調(diào)用,如果對(duì)象定義需要很多方,就要定義很多全局函數(shù),自定義的引用類(lèi)型就沒(méi)有封裝         性了  
  71.         */  
  72.   
  73.         //4.原型模式  
  74.         function Person() {  
  75.         }  
  76.   
  77.         Person.prototype.name = "Nocholas";  
  78.         Person.prototype.age = 29;  
  79.         Person.prototype.job = "Software Engineer";  
  80.         Person.prototype.sayName = function () {  
  81.             alert(this.name);  
  82.         }  
  83.   
  84.         /*  
  85.         原型模式所有參數(shù)默認(rèn)取得相同的值,屬性若為引用類(lèi)型,多個(gè)實(shí)例之間互相影響  
  86.         */  
  87.   
  88.         //5.構(gòu)造函數(shù)原型混合模式  
  89.         function Person(name, age, job) {  
  90.             this.name = name;  
  91.             this.age = age;  
  92.             this.job = job;  
  93.         }  
  94.   
  95.         Person.prototype.sayName = function () {  
  96.             alert(this.name);  
  97.         }  
  98.   
  99.         /*  
  100.         構(gòu)造函數(shù)用于定義實(shí)例屬性,原型用于定義方法和共享屬性,。eigenvalue實(shí)例都會(huì)有一份自己實(shí)例屬性的副本,同時(shí)享用著對(duì)共享方法的引用  
  101.         */  
  102.   
  103.   
  104.     </script>  
  105. </body>  
  106. </html>  
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Javascript構(gòu)建相似對(duì)象
JS 創(chuàng)建對(duì)象(常見(jiàn)的幾種方法)
javascript 創(chuàng)建對(duì)象的幾種方式
JavaScript創(chuàng)建對(duì)象的方式!
創(chuàng)建object對(duì)象的幾種方法,以及存值取值
深入理解JavaScript面向?qū)ο蟮某绦蛟O(shè)計(jì)(一)——對(duì)象的創(chuàng)建
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 桃园县| 玛沁县| 东辽县| 迁安市| 芜湖市| 崇州市| 广宗县| 安义县| 阳新县| 尼勒克县| 大名县| 靖江市| 寿光市| 赤壁市| 周至县| 兰州市| 广河县| 哈尔滨市| 百色市| 得荣县| 嘉黎县| 通海县| 三江| 通渭县| 九台市| 昌图县| 临西县| 岑巩县| 韶关市| 开封县| 朝阳市| 共和县| 紫金县| 分宜县| 临猗县| 关岭| 紫阳县| 桃源县| 肥西县| 江川县| 仙居县|