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