摘要:使外部調(diào)用時(shí)只要知道這個(gè)方法的存在多態(tài)父類(lèi)的方法繼承的到子類(lèi)以后可以有不同的實(shí)現(xiàn)方式創(chuàng)建對(duì)象為了避免重復(fù)造輪子,產(chǎn)生大量的代碼,我們可以使用工廠模式和構(gòu)造函數(shù)模式。像和這樣的原生構(gòu)造函數(shù),在運(yùn)行時(shí)會(huì)自動(dòng)出現(xiàn)在執(zhí)行環(huán)境中。
什么是面向?qū)ο?/b>
把數(shù)據(jù)和行為(對(duì)數(shù)據(jù)的操作)結(jié)合起來(lái),有類(lèi)的概念,通過(guò)類(lèi)創(chuàng)建任意多個(gè)具有相同屬性和方法的對(duì)象
繼承:可以使子類(lèi)復(fù)用父類(lèi)公開(kāi)的變量、方法;
封裝:屏蔽一系列的細(xì)節(jié)。使外部調(diào)用時(shí)只要知道這個(gè)方法的存在;
多態(tài):父類(lèi)的方法繼承的到子類(lèi)以后可以有不同的實(shí)現(xiàn)方式;
var Person = { name: "wheeler", age: 25, inMeeting: function () { return "I am in Meeting"; } };創(chuàng)建對(duì)象
為了避免重復(fù)造輪子,產(chǎn)生大量的代碼,我們可以使用工廠模式和構(gòu)造函數(shù)模式。
創(chuàng)建對(duì)象目前有兩種方式:
對(duì)象字面量
var Person = { name: "wheeler", age: 25, inMeeting: function () { return "I am in Meeting"; } };
優(yōu)點(diǎn):靈活方便
缺點(diǎn):每創(chuàng)建一個(gè)新的對(duì)象都需要寫(xiě)出完整的定義語(yǔ)句,不便于創(chuàng)建大量相同類(lèi)型的對(duì)象,不利于使用繼承等高級(jí)特性
使用new表達(dá)式
主要是配合構(gòu)造函數(shù)使用
function Person(name, age, dream){ this.name = name; this.age = age; this.dream = dream; this.myDream =function () { alert(this.dream); } }; person1 = new Person("wheeler", 25, "哈哈"); person2 = new Person("wheeler2", 26, "嘿嘿");工廠模式
什么是工廠模式?就是像工廠一樣批量創(chuàng)建對(duì)象。具體來(lái)說(shuō),抽象創(chuàng)建具體對(duì)象的過(guò)程。
var createPerson = function (name, age, dream) { var person = { name: name, age: age, dream: function () { return dream; } }; return person; }; var person1 = createPerson("wheeler", 25, "哈哈"); var person2 = createPerson("wheeler2", 26, "嘿嘿");構(gòu)造函數(shù)模式
ECMAScript 中的構(gòu)造函數(shù)可用來(lái)創(chuàng)建特定類(lèi)型的對(duì)象。像Object和Array這樣的原生構(gòu)造函數(shù),在運(yùn)行時(shí)會(huì)自動(dòng)出現(xiàn)在執(zhí)行環(huán)境中。
function Person(name, age, dream){ this.name = name; this.age = age; this.dream = dream; this.myDream =function () { alert(this.dream); } }; var person1 = new Person("wheeler", 25, "哈哈"); var person2 = new Person("wheeler2", 26, "嘿嘿");
以上代碼:
沒(méi)有顯式地創(chuàng)建對(duì)象;
直接將屬性和方法賦給了this對(duì)象;
沒(méi)有return語(yǔ)句。
以這種方式調(diào)用構(gòu)造函數(shù)實(shí)際上會(huì)經(jīng)歷以下4個(gè)步驟:
創(chuàng)建一個(gè)新對(duì)象;
將構(gòu)造函數(shù)的作用域賦給新對(duì)象(因此this就指向了這個(gè)新對(duì)象);
執(zhí)行構(gòu)造函數(shù)中的代碼(為這個(gè)新對(duì)象添加屬性);
返回新對(duì)象。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96747.html
摘要:在基于原型的面向?qū)ο蠓绞街?,?duì)象則是依靠構(gòu)造函數(shù)和原型構(gòu)造出來(lái)的。來(lái)看下面的例子優(yōu)點(diǎn)與單純使用構(gòu)造函數(shù)不一樣,原型對(duì)象中的方法不會(huì)在實(shí)例中重新創(chuàng)建一次,節(jié)約內(nèi)存。 我們所熟知的面向?qū)ο笳Z(yǔ)言如 C++、Java 都有類(lèi)的的概念,類(lèi)是實(shí)例的類(lèi)型模板,比如Student表示學(xué)生這種類(lèi)型,而不表示任何具體的某個(gè)學(xué)生,而實(shí)例就是根據(jù)這個(gè)類(lèi)型創(chuàng)建的一個(gè)具體的對(duì)象,比如zhangsan、lisi,由...
摘要:都是構(gòu)造函數(shù)模式創(chuàng)建的原生構(gòu)造函數(shù)。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象經(jīng)歷了以下四個(gè)過(guò)程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡(jiǎn)單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問(wèn)題,沒(méi)有普適性,意思就是說(shuō)我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...
摘要:都是構(gòu)造函數(shù)模式創(chuàng)建的原生構(gòu)造函數(shù)。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象經(jīng)歷了以下四個(gè)過(guò)程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡(jiǎn)單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問(wèn)題,沒(méi)有普適性,意思就是說(shuō)我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...
摘要:簡(jiǎn)單來(lái)理解對(duì)象就是由屬性和方法來(lái)組成的面向?qū)ο蟮奶攸c(diǎn)封裝對(duì)于一些功能相同或者相似的代碼,我們可以放到一個(gè)函數(shù)中去,多次用到此功能時(shí),我們只需要調(diào)用即可,無(wú)需多次重寫(xiě)。 什么是對(duì)象 我們先來(lái)看高程三中是如何對(duì)對(duì)象進(jìn)行定義的 無(wú)序?qū)傩缘募希鋵傩钥梢园ɑ局?、?duì)象或者函數(shù),對(duì)象是一組沒(méi)有特定順序的的值。對(duì)象的沒(méi)個(gè)屬性或方法都有一個(gè)俄名字,每個(gè)名字都映射到一個(gè)值。 簡(jiǎn)單來(lái)理解對(duì)象就是由屬...
摘要:對(duì)象字面量創(chuàng)建對(duì)象張三學(xué)生這種方式的好處顯而易見(jiàn),就是解決了之前的缺點(diǎn)。構(gòu)造函數(shù)模式張三學(xué)生李四學(xué)生與之前工廠模式的方法對(duì)比變量名首字母大寫(xiě)了在函數(shù)內(nèi)沒(méi)有顯式的創(chuàng)建及返回對(duì)象而使用了創(chuàng)建時(shí)使用了關(guān)鍵字。 面向?qū)ο笫荍S的重點(diǎn)與難點(diǎn),但也是走向掌握J(rèn)S的必經(jīng)之路,有很多的文章或書(shū)籍中都對(duì)其進(jìn)行了詳細(xì)的描述,本沒(méi)有必要再寫(xiě)這些,但是對(duì)于學(xué)習(xí)來(lái)說(shuō),講給別人聽(tīng)對(duì)自己來(lái)說(shuō)是一種更好的受益方式。我...
閱讀 4829·2021-11-15 11:39
閱讀 2730·2021-11-11 16:55
閱讀 2225·2021-10-25 09:44
閱讀 3533·2021-09-22 16:02
閱讀 2466·2019-08-30 15:55
閱讀 3156·2019-08-30 13:46
閱讀 2713·2019-08-30 13:15
閱讀 1984·2019-08-30 11:12