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

JavaScript創(chuàng)建對象方法實例小結(jié)

 更新時間:2018年09月03日 12:10:39   作者:哆啦C銘  
這篇文章主要介紹了JavaScript創(chuàng)建對象方法,結(jié)合實例形式總結(jié)了javascript創(chuàng)建對象的基本原理及使用工廠模式、構(gòu)造函數(shù)模式與原型模式創(chuàng)建對象的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了JavaScript創(chuàng)建對象方法。分享給大家供大家參考,具體如下:

最簡單的方式就是創(chuàng)建一個Object對象,并為其添加屬性和方法。

//示例代碼
var person=new Object()
person.name="yumi"
person.age=18
person.job="coder"
person.sayName=function(){
  alert(this.name)
}
person.sayName()//輸出yumi

這種方式使用同一個接口創(chuàng)建多個對象,會出現(xiàn)大量重復(fù)代碼。

1.工廠模式

JavaScript中無法創(chuàng)建類,我們可以用函數(shù)來封裝以特定接口創(chuàng)建對象的細(xì)節(jié)。

//示例代碼
function createPerson(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=createPerson("yumi",18,"coder");
var person2=createPerson("echo",21,"player");
person1.sayName();//輸出yumi
person2.sayName();//輸出echo

工廠模式雖然解決了創(chuàng)建多個相似對象的問題,但卻沒有解決對象識別問題,即怎樣知道一個對象的類型。

2.構(gòu)造函數(shù)模式

可以創(chuàng)建自定義的構(gòu)**造函數(shù),從而定義自定義對象類型的屬性和方法。

//示例代碼
function Person(name,age,job){
  this.name=name;
  this.age=age;
  this.job=job;
  this.sayName=function(){
    alert(name);
  }
}
var person1=new Person("yumi",18,"coder");
var person2=new Person("echo",21,"player");
person1.sayName();//輸出yumi
person2.sayName();//輸出echo

創(chuàng)建出的對象既是Object的實例,也是Person的實例,也就是說將來我們可以將它的實例標(biāo)識為特定類型,這也是優(yōu)于工廠模式的地方。但是構(gòu)造函數(shù)模式也有缺點,即就是每實例化一個對象,對象方法都會創(chuàng)建一遍,我們可以按如下方法稍加改進(jìn):

//示例代碼
function Person(name,age,job){
  this.name=name;
  this.age=age;
  this.job=job;
  this.sayName=sayName;
}
function sayName(){
  alert(name);
}
var person1=new Person("yumi",18,"coder");
var person2=new Person("echo",21,"player");
person1.sayName();
person2.sayName();

將函數(shù)拿到構(gòu)造函數(shù)外部,構(gòu)造函數(shù)內(nèi)部將sayName屬性設(shè)成全局sayName函數(shù)(一般單獨的函數(shù)名存放的是指向該函數(shù)的指針,而函數(shù)名加括號為該函數(shù)的執(zhí)行結(jié)果)。但這樣做,暴露出的問題是:全局作用域中定義的函數(shù)只能被某一個對象調(diào)用,不符合全局定義了。而且,如果某個對象有很多方法,這些方法都定義在全局作用域的話,也就沒什么封裝性可言了。

3.原型模式

前面我們說了,構(gòu)造函數(shù)模式的缺點是屬性或方法在構(gòu)造函數(shù)作用域中只能被某個對象調(diào)用,想想我們在其他面向?qū)ο笳Z言中的處理方式,是將公用的屬性方法定義在父類中,然后通過繼承父類調(diào)用。但是JavaScript中不存在類、繼承這些概念,而是通過原型鏈實現(xiàn)“繼承”。

下面就是我們要說的原型模式:

//示例代碼
function Person(){
  Person.prototype.name"yumi";
  Person.prototype.age=18;
  Person.prototype.job=coder;
  Person.prototype.sayName=function(){
    alert(name);
  }
}
var person1=new Person();
var person2=new Person();
person1.sayName();  //"yumi"
person2.sayName();  //"yumi"
alert(person1.sayName==person2.sayName);  //true

無論什么時候,只要創(chuàng)建了一個新函數(shù),就會為該函數(shù)創(chuàng)建一個prototype屬性。默認(rèn)情況下,所有prototype屬性都會自動獲得一個constructor(構(gòu)造函數(shù))屬性。這個屬性包含一個指向prototype屬性所在函數(shù)的指針。也就是說,Person可以理解為一個類(實際是個函數(shù)),Person.prototype指向原型(原型中定義的方法或?qū)傩钥梢员粚ο笳{(diào)用,相當(dāng)于一個共享區(qū)域),然后Person.prototype.constructor又指向了Person。實例化的對象有一個內(nèi)部屬性可以指向Person.prototype,但是不能指向構(gòu)造函數(shù)constructor,跟其無關(guān)。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行結(jié)果。

更多關(guān)于JavaScript相關(guān)內(nèi)容還可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • 如何安裝控制器JavaScript生成插件詳解

    如何安裝控制器JavaScript生成插件詳解

    這篇文章主要給大家介紹了關(guān)于如何安裝控制器JavaScript生成插件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • JavaScript實現(xiàn)無縫輪播圖的示例代碼

    JavaScript實現(xiàn)無縫輪播圖的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript語言實現(xiàn)無縫輪播功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • ES6新特性之類(Class)和繼承(Extends)相關(guān)概念與用法分析

    ES6新特性之類(Class)和繼承(Extends)相關(guān)概念與用法分析

    這篇文章主要介紹了ES6新特性之類(Class)和繼承(Extends)相關(guān)概念與用法,結(jié)合實例形式較為詳細(xì)的分析了ES6中類(Class)和繼承(Extends)的基本概念、語法、使用方法與注意事項,需要的朋友可以參考下
    2017-05-05
  • JavaScript前端巧妙實現(xiàn)數(shù)據(jù)實時更新詳解

    JavaScript前端巧妙實現(xiàn)數(shù)據(jù)實時更新詳解

    作為開發(fā)者,我們常面對復(fù)雜的開發(fā)環(huán)境,要應(yīng)對即時通訊與數(shù)據(jù)實時更新的問題,那么該如何精準(zhǔn)高效實現(xiàn)這些功能呢,下面小編就來和大家簡單講講
    2025-03-03
  • JS檢測數(shù)組類型的方法小結(jié)

    JS檢測數(shù)組類型的方法小結(jié)

    這篇文章主要介紹了js檢測數(shù)組類型的方法小結(jié),有instanceof方法Array.isArray() 方法和Object.prototype.toString.call()方法,都是比較常用的,需要的朋友可以參考下
    2017-03-03
  • JavaScript命名空間模式實例詳解

    JavaScript命名空間模式實例詳解

    這篇文章主要介紹了JavaScript命名空間模式,結(jié)合實例形式分析了javascript命名空間模式的相關(guān)概念、原理、實現(xiàn)方法及操作注意事項,需要的朋友可以參考下
    2019-06-06
  • 詳解JS: reduce方法實現(xiàn) webpack多文件入口

    詳解JS: reduce方法實現(xiàn) webpack多文件入口

    本篇文章主要介紹了詳解JS: reduce方法實現(xiàn) webpack多文件入口,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • JS控制CSS樣式的方法

    JS控制CSS樣式的方法

    JS控制CSS樣式的方法...
    2007-10-10
  • uni-app的基本使用教程

    uni-app的基本使用教程

    uni-app??? 是一個使用 ???Vue.js?? 開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、H5、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘)等多個平臺,這篇文章主要介紹了uni-app的基本使用,需要的朋友可以參考下
    2022-11-11
  • 微信小程序?qū)崿F(xiàn)分享朋友圈的圖片功能示例

    微信小程序?qū)崿F(xiàn)分享朋友圈的圖片功能示例

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)分享朋友圈的圖片功能,結(jié)合實例形式分析了微信小程序?qū)崿F(xiàn)分享到朋友圈功能的具體操作技巧,需要的朋友可以參考下
    2019-01-01

最新評論

厦门市| 岑巩县| 镇宁| 揭西县| 大丰市| 忻城县| 辰溪县| 成都市| 宝兴县| 泰宁县| 合川市| 富川| 香港 | 彝良县| 嘉善县| 将乐县| 福安市| 哈密市| 柞水县| 潼关县| 南京市| 廉江市| 闻喜县| 桐柏县| 延吉市| 夹江县| 馆陶县| 扎囊县| 盱眙县| 三明市| 遵义市| 宜君县| 呼图壁县| 慈利县| 安乡县| 余庆县| 周至县| 潞西市| 筠连县| 湟源县| 永福县|