日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

javaScript面向对象表示

發(fā)布時(shí)間:2025/5/22 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javaScript面向对象表示 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這里主要簡單寫一下javaScript面向?qū)ο蟮牟粩喟l(fā)展的一些寫法和優(yōu)缺點(diǎn)。直接開門見山。

1、最簡單的方式

創(chuàng)建Object的實(shí)例,為它添加屬性和方法

var car = new Object(); //創(chuàng)建實(shí)例 car.color = "red"; //為car這個(gè)對象增加顏色的屬性 car.showColor= function(){ //car的方法//處理 }

?對象字面量的寫法

var car = {color : "red",showColor : function(){//處理} }

?使用創(chuàng)建單個(gè)實(shí)例或是對象字面量的寫法可以創(chuàng)建單個(gè)對象,但是如果我們需要?jiǎng)?chuàng)建多個(gè)對象,以上方法就顯得很麻煩,我們必須復(fù)制一套相同的代碼,產(chǎn)生car2、car3

2、使用工廠模式創(chuàng)建對象

工廠方式創(chuàng)建對象避免了代碼的重復(fù),通過構(gòu)建工廠,大大方便了實(shí)例化

function makeCar(color){var car = new Object(); //創(chuàng)建一個(gè)實(shí)例car.color = color, //添加屬性car.showColor = function(){ //添加方法alert(this.color);} return car; //將生成的實(shí)例返回 }調(diào)用: var car1 = car("red"); var car2 = car("green");

?工廠模式順利解決創(chuàng)建多個(gè)對象時(shí)編寫重復(fù)代碼的問題。而另一個(gè)方面,通過上面這種方式,我們知道,car1和car2都是通過生成Object實(shí)例在附加屬性和方法產(chǎn)生的,即他們都是Object的實(shí)例,所以我們并不能很好的知道產(chǎn)生的對象的類型。

3、構(gòu)造函數(shù)模式

function Car(color){ //一般構(gòu)造函數(shù)開頭大寫this.color = color; //添加屬性 this.showColor = function(){ //添加方法alert(this.color);} }調(diào)用: var car1 = new Car("red"); var car2 = new Car("green");

?比較構(gòu)造函數(shù)模式和工廠模式我們可以看出以下區(qū)別

??? 1、在構(gòu)造函數(shù)模式里面并沒有new Object();方式創(chuàng)建實(shí)例和對此實(shí)例的賦值

??? 2、在構(gòu)造函數(shù)模式里面沒有返回創(chuàng)建的實(shí)例

??? 3、構(gòu)造函數(shù)模式直接將屬性和方法賦值給this對象

??? 4、構(gòu)造函數(shù)模式使用new 操作符產(chǎn)生Car的對象

  通過上述的方法,我們就可以創(chuàng)建兩個(gè)Car的對象,解決對象識別的問題(可以使用instanceof方法檢驗(yàn))

  那么使用上面的構(gòu)造方法創(chuàng)建對象是不是沒有缺點(diǎn)呢?答案是否定的,上面的代碼中的創(chuàng)建方法的方式實(shí)際上相當(dāng)于

  this.showColor = new Function("alert(this.color)");

  這樣的話,new出多個(gè)對象就相當(dāng)于創(chuàng)建了多個(gè)Function實(shí)例,而這個(gè)是浪費(fèi)的。于是我們可以這樣改造:

function Car(color){ //一般構(gòu)造函數(shù)開頭大寫this.color = color; //添加屬性 this.showColor = showColor; } function showColor(){ //添加方法alert(this.color); }

?但是這種方法同樣存在一個(gè)缺點(diǎn),那就是會產(chǎn)生showColor這個(gè)全部的函數(shù),是函數(shù)的封裝性無法實(shí)現(xiàn)。

4、構(gòu)造函數(shù)和原型鏈方式

function Car(color){ //一般構(gòu)造函數(shù)開頭大寫this.color = color; //添加屬性 } Car.prototype = { constructor : Car,showColor : function(){alert(this.color);} }

?我們需要知道的是,使用原型鏈定義方法和共享的屬性可以通過引用的方式共享,可以最大程度的節(jié)約內(nèi)存,這是采用度較高的一種方式。

轉(zhuǎn)載于:https://www.cnblogs.com/sheilooblog/p/5252291.html

總結(jié)

以上是生活随笔為你收集整理的javaScript面向对象表示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。