最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript中的對象和原型(二)

 更新時間:2016年08月12日 15:49:15   作者:念在三角湖畔  
這篇文章給大家介紹了js中的對象和原型,從工廠模式,構(gòu)造函數(shù)方面展開話題,介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下

在上篇文章中JavaScript中的對象和原型(一)提到了JavaScript中對象的創(chuàng)建的一些基本操作,接下來討論下繼續(xù)討論。

  一 工廠模式

  我們知道,要創(chuàng)建一個對象我們可以用如下代碼:

var user = new Object(); //使用new運算符創(chuàng)建一個對象
user.name = '念在三角湖畔'; //給對象添加屬性
user.age = 22;
user.address = '湖北武漢';
alert(user.name + " " +user.age);//返回 '念在三角湖畔 湖北武漢' 

  用這樣的方法創(chuàng)建對象比較簡單直觀,也是JavaScript種創(chuàng)建對象最基本的方法。但是這樣就有一個問題,如果我們需要創(chuàng)建多個對象,那么我就得寫很多重復(fù)的代碼。比如我們想創(chuàng)建另一個對象user1,我們就得重新將上面的代碼重新寫一遍,這在實際開發(fā)過程中是不合適的,這樣如果對象過多,代碼量將大大增加。

  為了解決這樣的問題,我們可以使用一種叫做工廠模式的方法,這種方法 就是為了解決實例化對象產(chǎn)生大量重復(fù)代碼的問題。

function create(name, age) {
  var obj = new Object(); 
  obj.name = name; 
  obj.age = age;
  obj.run = function () {
    return this.name +' '+ this.age;
  };
  return obj;
}
var obj1= create('ZXC', 10); //第一個實例
var obj2= create('CXZ', 20); //第二個實例
alert(obj1.run());
alert(obj1.run()); 

 從上面的代碼我們可以看出,工廠模式解決了實例化時代碼大量重復(fù)的問題,但又出現(xiàn)了一個問題,那就是識別問題,我們根本無法弄清楚他們到底是哪個對象的實例。比如

alert(typeof obj1); //Object
alert(obj1 instanceof Object); //true 

  以上代碼標(biāo)明box1是Object對象,但是我們無法知道具體是哪一個對象創(chuàng)建的。

  二 構(gòu)造函數(shù)(構(gòu)造方法)

  為了解決上面的問題,我們可以用構(gòu)造方法去創(chuàng)建對象。構(gòu)造函數(shù)和普通函數(shù)的唯一區(qū)別,就是調(diào)用的方式不同。但是,構(gòu)造函數(shù)同樣是函 數(shù)。

function User(name, age) { //構(gòu)造函數(shù)模式
  this.name = name;
  this.age = age;
  this.run = function () {
    return this.name + ' '+this.age;   };
}

  創(chuàng)建對象的時候用new運算符就可以了:

var user1= new User('ZXC', 25);
var user2= new User('CXZ', 22); 

  現(xiàn)在我們就可以檢測user1或者user2是不是屬于User。

alert(user1 instanceof User);//true 

  可見,使用構(gòu)造函數(shù)的方法,即解決了重復(fù)實例化的問題,又解決了對象識別的問題。

  使用構(gòu)造函數(shù)時執(zhí)行的過程如下:

  1.執(zhí)行 new 構(gòu)造函數(shù)()時,后臺執(zhí)行了 new Object();

  2.將構(gòu)造函數(shù)的作用域給新對象。

  3.執(zhí)行構(gòu)造函數(shù)內(nèi)的代碼;

  4.后臺直接返回新對象。

  接下來我們看看構(gòu)造函數(shù)內(nèi)部的函數(shù)問題。如果我們執(zhí)行以下語句:

alert(user1.run==user2.run);//結(jié)果返回的是false 

  結(jié)果返回的是false,這就說明方法其實也是一種引用地址。如果我們同樣重復(fù)創(chuàng)建了多個對象,那么每個對象中的方法都會在內(nèi)存中開辟新的空間,這樣浪費的空間就比較多。要解決這個問題,我們就需要用到實例屬性或者方法的共享,下一篇文章中將繼續(xù)探討解決這個問題。

以上所述是小編給大家介紹的Javascript中的對象和原型(二),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • javascript 哈希表(hashtable)的簡單實現(xiàn)

    javascript 哈希表(hashtable)的簡單實現(xiàn)

    javascript中沒有像c#,java那樣的哈希表(hashtable)的實現(xiàn)。在js中,object屬性的實現(xiàn)就是hash表,因此只要在object上封裝點方法,簡單的使用obejct管理屬性的方法就可以實現(xiàn)簡單高效的hashtable。
    2010-01-01
  • 如何利用javascript接收json信息并進行處理

    如何利用javascript接收json信息并進行處理

    這篇文章主要介紹了如何利用javascript接收json信息并進行處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • from 表單提交返回值用post或者是get方法實現(xiàn)

    from 表單提交返回值用post或者是get方法實現(xiàn)

    from 表單提交的返回值可以用jquery的post或者是get方法去實現(xiàn),具體如下,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-08-08
  • 利用JS實現(xiàn)AI自動玩貪吃蛇

    利用JS實現(xiàn)AI自動玩貪吃蛇

    這篇文章主要為大家詳細(xì)介紹了如何利用JS實現(xiàn)AI版自動玩貪吃蛇小游戲,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JS游戲開發(fā)有一定幫助,需要的可以參考一下
    2022-06-06
  • 向大師們學(xué)習(xí)Javascript(視頻與PPT)

    向大師們學(xué)習(xí)Javascript(視頻與PPT)

    在開始之前,先與大家一起認(rèn)識下這篇文章的主角,世界級的javascript大牛們:Douglas Crockford、John Resig、Peter-Paul Koch、Nicolas C. Zakas。看名字也許挺陌生,但是如果你對javascript還算熟悉,一定不會對他們的作品陌生。
    2009-12-12
  • 微信小程序頁面間傳值的實現(xiàn)方法示例

    微信小程序頁面間傳值的實現(xiàn)方法示例

    這篇文章主要給大家介紹了關(guān)于微信小程序頁面間傳值的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Javascript下的urlencode編碼解碼方法附decodeURIComponent

    Javascript下的urlencode編碼解碼方法附decodeURIComponent

    而本文,就大概說說如何在js中通過系統(tǒng)自帶的函數(shù)去解決這個問題。
    2010-04-04
  • 獲取HTML DOM節(jié)點元素的方法的總結(jié)

    獲取HTML DOM節(jié)點元素的方法的總結(jié)

    在Web應(yīng)用程序特別是Web2.0程序開發(fā)中,經(jīng)常要獲取頁面中某個元素,然后更新該元素的樣式、內(nèi)容等。如何獲取要更新的元素,是首先要解決的問題。
    2009-08-08
  • JS字符串累加Array不一定比字符串累加快(根據(jù)電腦配置)

    JS字符串累加Array不一定比字符串累加快(根據(jù)電腦配置)

    言歸正傳:性能差異較大的機器運行結(jié)果會RT 出現(xiàn)大的差異,為了保險起見。還是推薦使用Array 來進行字符串拼接操作
    2012-05-05
  • 在微信小程序中獲取用戶位置的詳細(xì)過程

    在微信小程序中獲取用戶位置的詳細(xì)過程

    小程序需要用戶授權(quán)獲取用戶位置,獲取到經(jīng)緯度請求數(shù)據(jù)列表并解析為城市地址,用戶選擇城市時把城市解析為經(jīng)緯度,下面這篇文章主要給大家介紹了關(guān)于如何在微信小程序中獲取用戶位置的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論

资溪县| 磐安县| 商南县| 福鼎市| 绍兴县| 韶关市| 新化县| 恩平市| 瓦房店市| 甘谷县| 万宁市| 怀集县| 潜山县| 郁南县| 禄丰县| 静宁县| 洛浦县| 读书| 临漳县| 阳泉市| 大渡口区| 尼勒克县| 安泽县| 贡觉县| 长治县| 德兴市| 家居| 隆子县| 谢通门县| 彭阳县| 宁化县| 曲松县| 宣威市| 通州区| 陆河县| 兴义市| 略阳县| 神木县| 惠水县| 繁峙县| 鹤庆县|