摘要:面向對象概述簡單的概述以下面向對象面向對象變成的全稱為,簡稱。面向對象編程可以看作時使用一系列對象相互協作的軟件設計。面向對象編程的三個重要特征封裝,繼承,多態。構造函數的方法內關鍵字會指向當前對象。凍結對象禁止對對象執行任何修改操作。
面向對象 概述
簡單的概述以下面向對象
面向對象變成的全稱為object oriented programming, 簡稱oop。 面向對象編程時用抽象的方式創建基于現實世界模型的一種編程模式。
面向對象編程可以看作時使用一系列對象相互協作的軟件設計。面向對象編程設計的目的時在編程中促進更好的靈活性和可維護性。憑借其對模塊化的重視,面向對象的代碼開發更簡單,更容易理解。面向對象編程的三個重要特征:( 1 封裝,2 繼承,3 多態)。
所有的程序是由一定的屬性和行為對象組成的,不同的對象的訪問通過函數調用來完成,對詳間所有的交流都是通過方法調用,通過對封裝對象數據,提高復用率。
向對象是什么
JavaScript是一種基于原型的面向對象語言,而不是基于類的。正是由于這一種根本的區別,其如何創建對象的層級結構以及對象的屬性與屬性值是如何繼承的并不是那么清晰。
基于原型的語言(如JavaScript) 并不是在這種區別:它只有對象?;谠偷恼Z言具有所謂原型對象(prototypcal object) 的概念。原型對象可以作為一個模板,新對象可以從中獲取原始的屬性。任何對象都可以指定其自身的屬性,既可以是創建時也可以在運行創建時。而且任何對象都可以作為另一個對象的原型(prototype),從而允許后者共享前者的屬性。
封裝
所謂封裝就是按照要求使用并得到對應的結果,而不需要知道其真實的執行原理是怎么樣的
封裝主要用于闡述對象所包含的內容,他們通常由兩個部分組成:
1相關的數據(用于存儲屬性) 2基于這些數據所能作的事情
繼承
繼承通常是指類與類之間的關系。如果兩個類都具有相同的屬性或方法,那么可以讓一個繼承于另一個類,這樣就不需要在前者再次定義同樣的屬性或方法。
創建一個或者多個類的專門版本類方式為繼承。創建的專本版本的類通常叫做子類,另外的類通常叫做父類。在JavaScript中,繼承通過賦予子類一個父類的實例并專門化子類來實現
多態
不同的對象可以定義具有相同名稱的方法,方法是作用于所在的對象中。這種不同對象通過相同方法的調用實現各自行為的能力,被稱之為多態。
構造函數構造函數
構造函數由稱之為構造器或對象模板,是對象中的一個方法,在實例化是構造器被調用。在JavaScript中函數就可以作為構造器使用,因此不需要特別的定義一個構造器方法。
function person(){ console。log(‘person instantiated’);
}
var person = new person ();
這里的person()并不是作為函數 而是構造函數。
創建person對象需要使用new關鍵自
構造函數的實行
構造函數的屬性實際上就是對象的變量。一個對象可以包闊多個屬性,定義構造函數屬性是使用this這是關鍵字。
function Person (firstname){
this.firstname =firstName;
console.log (‘person instanttiated’);
}
var person = new person (‘Alice’);
console。log (‘person is +person。firstname’);
構造函數的方法
構造函數的方法想構造函數的屬性,不同的是方法是以惡函數(或像函數一個樣被定義)。定義構造函數的方法時使用this關鍵詞。
var person = function(firstname){
this.firstname = firstName;
this.sayhello = function () {
console.log ("hello, I"m+this.firstName");
};
};
var person = new person (Alice);
person.sayhello();
this這個關鍵詞
JavaScript 有一套完全不同于其他語言的對this處理機制,this 關鍵字本身沒有任何含義,比如下記中不同的情況下,this指向的各種不同。
全局范圍內:this關鍵字會指向全局對象。
this。a = 10 //global。a=10
console.log(a);//10
構造函數內:this 關鍵字會指向新創建的對象。
構造函數的方法內:this關鍵字會指向當前對象。
var hero={};
hero.sayName = function (){
return "hello " +this.name;
}
屬性描述符
JavaScript提供里一個內部數據結構,用于描述對象的值,控制其行為,例如該屬性是否可寫,是否可配置,是否修改以及是否可枚舉等。這個數據結構被稱為"屬性描述符"。
每一個屬性都有自己對應的屬性描述符,保存屬性的元信息。
{
value :‘臥龍學院’,
writable:false,
enumerable:true,
configurable:false,
get:undefined,
set:undefind
}
對象里面目前存在的屬性描述符有兩種主要形式:數據描述符和存儲描述符。
數據描述符
數據描述符是一個具有值得屬性,該值可能是可寫的,也可能不是可寫的。該數據描述符具有以下可選建值:
value:該屬性對應的值。可以是任何有效的JavaScript值(數值 對象,函數等。默認為undefined)
writable:當且僅當該屬性的writable 為true時,value才能被賦值運算符改變。默認為false。
configurable:當且僅當該屬性的configurable為true時,該屬性描述符才能夠被改變,同時該屬性也能從對應的對向上被刪除。默認為false。
enumerable:當且僅當該屬性的enumerable為true時,該屬性才能夠出現在對向上的枚舉屬性中默認為false
存儲描述符
存取描述符時由getter-setter 函數對描述的屬性。存取描述符具有以下可選建值:
get:給屬性提供getter方法,如果沒有getter則為undefined。當訪問該屬性時,該方法會被執行,方法執行時沒有參數傳入,但是會傳入this對象。
set:給屬性提供setter的方法,如果沒有setter則為undefined。當屬性值修改時,觸發執行該方法。該方法將接受唯一參數,及該屬性新的參數值。
configurable:當且僅當該屬性的writable 為true時 ,該屬性描述符才能夠被該表,同時屬性也能從對應的對象上被刪除。默認為false。
enumerable:當且僅當該屬性的enumerable為true時,該屬性才能夠出現在對象的枚舉屬性中。
默認為false
獲取屬性描述符
ObjectgetowmpropretyDescriptor()方法返回指定對象上一個自由屬性對應的屬性描述符。
obj:需要查找的目標對像,
prop:目標對象內屬性名稱(string類型)。
返回值:如果指定的屬性存在于對向上,則返回其屬性描述符對象,否則返回undefined。
設置屬性描述符
objectdefineproperty()方法為對象定義屬性改變現有屬性,并返回該對象。
obj:要在其上頂會議屬性的對象。
prop:要定義或者修改的屬性名稱。
descriptor:將被定義或修改的屬性描述符。
返回值:被傳遞給函數的對象。
objectdefineproperties()方法為對象定義一個或者多個新屬性或修改現有屬性,并返回該對象。
obj:要在其上定義屬性的對象。
props:要定義其可枚舉屬性或修改的修改屬性描述符的對象。
返回值:被傳遞給函數的對象。
屬性描述符的可選建值
writable:Boolean值,表示目標屬性的值是否可以內修改。當且僅當該屬性的writable為true時,value才能被賦值元算符該表。默認為false。
屬性描述符的可選鍵值
configurable:Boolean值,表示目標屬性的描述符是否可以被修改。當且僅當該屬性的configurable為true時,該屬性描述符才能夠被該表,同時該屬性也能從對應的對向上被刪除。默認為false
enumerable:Boolean值,表示目標屬性是否可遍歷。當且僅當該屬性的enumerable為true時,
該屬性才能夠被出現在對象的枚舉屬性中。默認為false。
如果對象的屬性的enumerable的值為false,以下三種操作取不到的屬性:
for in
objectkey()方法
jsonstring()方法
屬性描述符的存儲器
對象的屬性除了可以直接定義以外,還可以使用存儲器進行定義。其中setter為存儲函數,使用屬性描述符中的set;getter為取值函數,使用屬性喵符中的get
防篡改
定義的對象默認在任何時候,任何位置,無論有意義的還是無意義的都可以修改對象的屬性或方法。而這些篡改可能會影響內置屬性或方法,從而導致對象的正常功能可能無法使用。
JavaScript在ecmascrip5版本中新增字放置篡改對象的屬性或方法的機制,共提供了以下三級保護方式:
禁止拓展:禁止為對象擴展新的屬性或方法
密封對象:禁止擴展新的屬性或方法,禁止配置現有的屬性或方法描述符,僅允許讀寫屬性的值。
凍結對象:禁止對對象執行任何修改操作。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108183.html
摘要:面向對象三大特征繼承性多態性封裝性接口。第五階段封裝一個屬于自己的框架框架封裝基礎事件流冒泡捕獲事件對象事件框架選擇框架。核心模塊和對象全局對象,,,事件驅動,事件發射器加密解密,路徑操作,序列化和反序列化文件流操作服務端與客戶端。 第一階段: HTML+CSS:HTML進階、CSS進階、div+css布局、HTML+css整站開發、 JavaScript基礎:Js基礎教程、js內置對...
摘要:面向對象三大特征繼承性多態性封裝性接口。第五階段封裝一個屬于自己的框架框架封裝基礎事件流冒泡捕獲事件對象事件框架選擇框架。核心模塊和對象全局對象,,,事件驅動,事件發射器加密解密,路徑操作,序列化和反序列化文件流操作服務端與客戶端。 第一階段: HTML+CSS:HTML進階、CSS進階、div+css布局、HTML+css整站開發、 JavaScript基礎:Js基礎教程、js內置對...
摘要:面向對象面向對象的三種基本特征繼承封裝多態結構化程序設計簡介主要原則自頂向下逐步求精模塊化。在面向對象方法中,類之間共享屬性和操作的機制稱為繼承。 面向對象 面向對象的三種基本特征:繼承、封裝、多態 結構化程序設計簡介 主要原則:自頂向下、逐步求精、模塊化。 結構化分析SA方法對系統進行需求分析;結構化設計SD方法對系統進行概要設計、詳細設計;結構化編程SP方法來實現系統。 結構化程序...
摘要:年月宣布支持時間延長到年。更詳細的發布列表參閱官網的版本號分為三段,形如。其中表示大版本號,一般當整體重寫,或出現不向后兼容的改變時,增加表示功能更新,出現新功能時增加表示小的改動如修復了某個,只要有修改就增加。年公司正式發布。 < 返回索引頁 Python語言簡介 Python介紹及發展 介紹 Python 官方網站:https://www.python.org/, 大家可以到此處下...
閱讀 3358·2021-10-13 09:40
閱讀 2595·2021-10-08 10:17
閱讀 3999·2021-09-28 09:45
閱讀 932·2021-09-28 09:35
閱讀 1816·2019-08-30 10:51
閱讀 2906·2019-08-26 12:11
閱讀 1652·2019-08-26 10:41
閱讀 3100·2019-08-23 17:10