成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

詳解js面向?qū)ο缶幊?

lolomaco / 3374人閱讀

摘要:看下面一個(gè)例子優(yōu)點(diǎn)使用構(gòu)造器函數(shù)的好處在于,它可以在創(chuàng)建對(duì)象時(shí)接收一些參數(shù)。按照慣例,構(gòu)造函數(shù)的函數(shù)名應(yīng)始終以一個(gè)大寫(xiě)字母開(kāi)頭,以區(qū)分普通函數(shù)。返回該對(duì)象的源代碼。使您有能力向?qū)ο筇砑訉傩院头椒ā?/p>

基本概念

ECMA關(guān)于對(duì)象的定義是:”無(wú)序?qū)傩缘募希鋵傩钥梢园局?、?duì)象或者函數(shù)?!皩?duì)象的每個(gè)屬性或方法都有一個(gè)名字,而每個(gè)名字都映射到一個(gè)值。

類(lèi)

在現(xiàn)實(shí)生活中,相似的對(duì)象之間往往都有一些共同的組成特征。類(lèi),實(shí)際上是對(duì)象的設(shè)計(jì)藍(lán)圖或者制作配方。我們能基于相同的類(lèi)創(chuàng)建出許多不同的對(duì)象,這些對(duì)象又會(huì)含有各自的屬性和方法。

封裝

封裝主要用于闡述對(duì)象中所包含(或封裝的內(nèi)容),它通常由兩部分組成:

相關(guān)的數(shù)據(jù)(用于存儲(chǔ)屬性)

基于這些數(shù)據(jù)所能做的事(所能調(diào)用的方法)

創(chuàng)建對(duì)象

我們可以通過(guò)對(duì)象直接量、new關(guān)鍵字和object.create()函數(shù)來(lái)創(chuàng)建。

對(duì)象直接量

創(chuàng)建對(duì)象最簡(jiǎn)單的方法就是在js中使用對(duì)象直接量,它是由若干名/值對(duì)組成的映射表,名/值對(duì)中間用冒號(hào)分隔,多個(gè)名/值對(duì)用逗號(hào)分隔。整個(gè)映射表用花括號(hào)({})括起來(lái)。

var empty = {};//沒(méi)有任何屬性的對(duì)象
var fruits = {apple:big , orange:yellow};

var company = {
    CEO : "Tim Cook",//屬性名字里有空格,必須用字符串表示
    Designer:"Ive";
    "for":"all audiences",//"for"是保留字,必須用引號(hào)
    employees:{
        firstname:"David",    //這里的屬性名都沒(méi)有引號(hào)
        lastname:"fill"    //這個(gè)屬性的值是一個(gè)對(duì)象
    }
};

對(duì)象里還可以嵌套對(duì)象(company里嵌套了employees對(duì)象)

new關(guān)鍵字創(chuàng)建對(duì)象

關(guān)鍵字new后面跟隨一個(gè)函數(shù)調(diào)用,這個(gè)函數(shù)稱(chēng)為構(gòu)造函數(shù)(constructor),javascript語(yǔ)言核心的原始類(lèi)型都包含內(nèi)置的構(gòu)造函數(shù)。


js原型->參照:javascript學(xué)習(xí)總結(jié)(五)原型和原型鏈詳解

工廠(chǎng)模式

由于ECMAScript中無(wú)法創(chuàng)建類(lèi),因此,開(kāi)發(fā)人員發(fā)明了一種函數(shù),用函數(shù)來(lái)封裝以特定接口創(chuàng)建對(duì)象的細(xì)節(jié):



什么時(shí)候使用工廠(chǎng)模式?

以下幾種情景下工廠(chǎng)模式特別有用:

對(duì)象的構(gòu)建十分復(fù)雜
需要依賴(lài)具體環(huán)境創(chuàng)建不同實(shí)例
處理大量具有相同屬性的小對(duì)象
元素、屬性和方法

說(shuō)到數(shù)組,我們常說(shuō)其中包含的是元素,而當(dāng)說(shuō)到對(duì)象的時(shí)候,我們常會(huì)說(shuō)其中包含的是屬性。另外,對(duì)象的屬性也可以是一個(gè)函數(shù),因?yàn)楹瘮?shù)本身也是一種數(shù)據(jù),在這種情況下,我們會(huì)稱(chēng)該屬性為方法:


調(diào)用對(duì)象方法

注:

 1. 盡量使用點(diǎn)號(hào)表示法來(lái)訪(fǎng)問(wèn)對(duì)象的屬性和方法。
 2. 不要在對(duì)象中使用帶引號(hào)的屬性標(biāo)示。

構(gòu)造器函數(shù)

另外,我們還可以使用構(gòu)造器函數(shù)的方式來(lái)創(chuàng)建對(duì)象??聪旅嬉粋€(gè)例子:


優(yōu)點(diǎn)

使用構(gòu)造器函數(shù)的好處在于,它可以在創(chuàng)建對(duì)象時(shí)接收一些參數(shù)。按照慣例,構(gòu)造函數(shù)的函數(shù)名應(yīng)始終以一個(gè)大寫(xiě)字母開(kāi)頭,以區(qū)分普通函數(shù)。

區(qū)別

構(gòu)造函數(shù)與普通函數(shù)的區(qū)別在于調(diào)用的方式不同,任何函數(shù),只要通過(guò)new操作符來(lái)調(diào)用,那它就可以作為構(gòu)造函數(shù)。

缺點(diǎn)

使用構(gòu)造函數(shù)的主要問(wèn)題是,每個(gè)方法都要在每個(gè)實(shí)例上重新創(chuàng)建一遍。

擴(kuò)展閱讀:javascript學(xué)習(xí)總結(jié)(五)原型和原型鏈詳解

全局對(duì)象

事實(shí)上,程序所在的宿主環(huán)境一般都會(huì)為其提供一個(gè)全局對(duì)象,而所謂的全局變量其實(shí)都只不過(guò)是該對(duì)象的屬性罷了。

例如,當(dāng)程序所在的宿主環(huán)境是web瀏覽器時(shí),它所提供的全局對(duì)象就是window了。

內(nèi)建對(duì)象

內(nèi)建對(duì)象大致分為三組:

數(shù)據(jù)封裝類(lèi)對(duì)象——包括Object、Array、Boolean、Number和String。這些對(duì)象代表著javascript中不同的數(shù)據(jù)類(lèi)型,并且都擁有各自不同的typeof返回值,以及undefinednull狀態(tài)

工具類(lèi)對(duì)象——包括Math、Date、RegExp等用于提供遍歷的對(duì)象

錯(cuò)誤類(lèi)對(duì)象——包括一般性錯(cuò)誤對(duì)象及其它各種更特殊的錯(cuò)誤類(lèi)對(duì)象

Object是js中所有對(duì)象的父級(jí)對(duì)象,這意味著我們創(chuàng)建的所有對(duì)象都繼承于此。

所謂的空對(duì)象實(shí)際上并不是完全無(wú)用的,它還是包含了一些屬性和方法的:

返回構(gòu)造器函數(shù)的構(gòu)造器屬性

返回對(duì)象描述字符串的toString()方法

返回對(duì)象單值描述信息的valueOf()方法

例如:

var o = new Object();
o.toString();//[object Object]
Array

Array()是一個(gè)用來(lái)構(gòu)建數(shù)組的內(nèi)建構(gòu)造器函數(shù)。數(shù)組主要由如下三種創(chuàng)建方式:

array = new Array()
array = new Array([size])
array = new Array(element0, element1, ..., elementN)

Array 對(duì)象方法
方法                    描述

concat()     連接兩個(gè)或更多的數(shù)組,并返回結(jié)果。
join()       把數(shù)組的所有元素放入一個(gè)字符串。元素通過(guò)指定的分隔符進(jìn)行分隔。
pop()         刪除并返回?cái)?shù)組的最后一個(gè)元素
push()         向數(shù)組的末尾添加一個(gè)或更多元素,并返回新的長(zhǎng)度。
reverse()     顛倒數(shù)組中元素的順序。
shift()     刪除并返回?cái)?shù)組的第一個(gè)元素
slice()     從某個(gè)已有的數(shù)組返回選定的元素
sort()         對(duì)數(shù)組的元素進(jìn)行排序
splice()     刪除元素,并向數(shù)組添加新元素。
toSource()     返回該對(duì)象的源代碼。
toString()     把數(shù)組轉(zhuǎn)換為字符串,并返回結(jié)果。
toLocaleString()     把數(shù)組轉(zhuǎn)換為本地?cái)?shù)組,并返回結(jié)果。
unshift()     向數(shù)組的開(kāi)頭添加一個(gè)或更多元素,并返回新的長(zhǎng)度。
valueOf()     返回?cái)?shù)組對(duì)象的原始值

concat()方法:合并數(shù)組

[1,2]concat([3,4],[5,6]);//[1,2,3,4,5,6]


join()方法:


pop()方法:移除數(shù)組最后一個(gè)元素,并將其返回


shift()方法:刪除并返回?cái)?shù)組的第一個(gè)元素。


slice(start,end)方法:截取數(shù)組的某一部分,不會(huì)對(duì)原數(shù)組進(jìn)行任何修改


splice(start,delete_count,i1,i2…)方法:刪除數(shù)組元素的同時(shí)添加新的元素。i1,i2為要插入的新元素



Array對(duì)象屬性
屬性                 描述
constructor     返回對(duì)創(chuàng)建此對(duì)象的數(shù)組函數(shù)的引用。
length             設(shè)置或返回?cái)?shù)組中元素的數(shù)目。
prototype         使您有能力向?qū)ο筇砑訉傩院头椒ā?
DOM和BOM

window對(duì)象是BOM的頂層(核心)對(duì)象,所有對(duì)象都是通過(guò)它延伸出來(lái)的,也可以稱(chēng)為window的子對(duì)象

有關(guān)BOM和DOM的討論,詳見(jiàn)我這篇文章:javascript學(xué)習(xí)總結(jié)(三)BOM和DOM詳解

函數(shù)

有關(guān)函數(shù)部分的討論,詳見(jiàn)我這篇文章:javascript學(xué)習(xí)總結(jié)(四)function函數(shù)部分

這里討論下幾個(gè)js的內(nèi)建函數(shù):

parseInt() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)整數(shù)。

parseInt(string, radix)

radix:進(jìn)制基數(shù),其默認(rèn)值是10(即十進(jìn)制)。

parseInt("10e+3");//10
parseInt("FF");//NaN
parseInt("FF",16)//255

parseFloat():將接受的參數(shù)轉(zhuǎn)換成浮點(diǎn)值并返回。

parseFloat("123.456t");//123.456

isNaN():該函數(shù)是“is Not a Number”的縮寫(xiě),用于判斷其參數(shù)是否是一個(gè)有效數(shù)字,如果是就返回true,否則返回false。

補(bǔ)充:

自執(zhí)行函數(shù):保證全局命名空間不被污染的模式。通過(guò)把代碼裝在一個(gè)匿名函數(shù)中并立刻自行調(diào)用。如此一來(lái),該函數(shù)中的所有變量都是局部的(假設(shè)使用了var關(guān)鍵字)。

(function(){
    //code
})();//最后一個(gè)圓括號(hào)用于執(zhí)行

有關(guān)這部分,也可參加我的另一篇文章:詳解js閉包

JSON

詳見(jiàn):javascript學(xué)習(xí)總結(jié)(六)數(shù)據(jù)類(lèi)型和JSON格式

style對(duì)象

style.display = "";是清除`display`樣式,`display`將使用默認(rèn)值(塊元素會(huì)變成block,內(nèi)聯(lián)元素會(huì)變成inline)
style.display="none"; 中“none”是一個(gè)值,表示元素將隱藏


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87635.html

相關(guān)文章

  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類(lèi)繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)?lái)幫助....(據(jù)說(shuō)是阿里的前端妹子寫(xiě)的) this 的值到底...

    blair 評(píng)論0 收藏0
  • 【連載】前端個(gè)人文章整理-從基礎(chǔ)到入門(mén)

    摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫(xiě)文章的想法,到著手開(kāi)始寫(xiě),再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫(xiě)好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫(xiě)文章的想法,到著手...

    madthumb 評(píng)論0 收藏0
  • 解決js面向對(duì)象編程的難題

    摘要:一面向?qū)ο缶幊毯?jiǎn)介定義,簡(jiǎn)稱(chēng),是一種程序設(shè)計(jì)思想。好處維護(hù)簡(jiǎn)單模塊化是面向?qū)ο缶幊讨械囊粋€(gè)特征??蓴U(kuò)充性面向?qū)ο缶幊虖谋举|(zhì)上支持?jǐn)U充性。 一、面向?qū)ο缶幊毯?jiǎn)介 1.定義: Object Oriented Programming,簡(jiǎn)稱(chēng)OOP,是一種程序設(shè)計(jì)思想。OOP把對(duì)象作為程序的基本單元,一個(gè)對(duì)象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。 2.好處: (1)、維護(hù)簡(jiǎn)單:模塊化是面向?qū)ο缶幊讨械囊粋€(gè)...

    ermaoL 評(píng)論0 收藏0
  • 區(qū)塊鏈開(kāi)發(fā)中使用的最流行的編程語(yǔ)言

    摘要:我們目前正處于一個(gè)新興的區(qū)塊鏈開(kāi)發(fā)行業(yè)中。,一種在以太坊開(kāi)發(fā)人員中流行的新的簡(jiǎn)單編程語(yǔ)言,因?yàn)樗怯糜陂_(kāi)發(fā)以太坊智能合約的語(yǔ)言。它是全球至少萬(wàn)開(kāi)發(fā)人員使用的世界上最流行的編程語(yǔ)言之一。以太坊,主要是針對(duì)工程師使用進(jìn)行區(qū)塊鏈以太坊開(kāi)發(fā)的詳解。 我們目前正處于一個(gè)新興的區(qū)塊鏈開(kāi)發(fā)行業(yè)中。區(qū)塊鏈技術(shù)處于初期階段,然而這種顛覆性技術(shù)已經(jīng)成功地風(fēng)靡全球,并且最近經(jīng)歷了一場(chǎng)與眾不同的繁榮。由于許多...

    2shou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

lolomaco

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<