javascript面向對象1的簡單介紹

本文目錄一覽:

什麼是javascript面向對象

面向對象思想的成功是由於它仿照了現實中的事物和事物的聯繫.事物有屬性和方法.如果描述一個檯燈.會說它的高度和寬度,比如12CM.”開燈”這個動作是它的方法.當它是處於開著的狀態時.它可以被調亮一點或暗一點(也就是亮度這個屬性值變大或變小).

如何理解並學習javascript中的面向對象

首先,對象的定義大致如下:

對象(object)是JavaScript的核心概念,也是最重要的數據類型。JavaScript的所有數據都可以被視為對象。

簡單說,所謂對象,就是一種無序的數據集合,由若干個逗鍵值對地(key-value)構成。

var o = {

p: “Hello World”

};

上面代碼中,大括弧就定義了一個對象,它被賦值給變數o。這個對象內部包含一個鍵值對(又稱為逗成員地),p是逗鍵名地(成員的名稱),字元串逗Hello World地是逗鍵值地(成員的值)。鍵名與鍵值之間用冒號分隔。如果對象內部包含多個鍵值對,每個鍵值對之間用逗號分隔。

我們從兩個層次來理解。

(1)逗對象地是單個實物的抽象。

一本書、一輛汽車、一個人都可以是逗對象地,一個資料庫、一張網頁、一個與遠程伺服器的連接也可以是逗對象地。當實物被抽象成逗對象地,實物之間的關係就變成了逗對象地之間的關係,從而就可以模擬現實情況,針對逗對象地進行編程。

(2)逗對象地是一個容器,封裝了逗屬性地(property)和逗方法地(method)。

所謂逗屬性地,就是對象的狀態;所謂逗方法地,就是對象的行為(完成某種任務)。比如,我們可以把動物抽象為animal對象,逗屬性地記錄具體是那一種動物,逗方法地表示動物的某種行為(奔跑、捕獵、休息等等)。

其次,典型的面向對象編程語言(比如C++和Java),存在逗類地(class)這樣一個概念。所謂逗類地就是對象的模板,對象就是逗類地的實例。JavaScript語言沒有逗類地,而改用構造函數(constructor)作為對象的模板。

前面說過,逗對象地是單個實物的抽象。所以,通常需要一個模板,表示某一類實物的共同特徵,然後逗對象地根據這個模板生成。

js面向對象的幾種方式

JavaScript中對象的創建有以下幾種方式:

(1)使用內置對象

(2)使用JSON符號

(3)自定義對象構造

一、使用內置對象

JavaScript可用的內置對象可分為兩種:

1,JavaScript語言原生對象(語言級對象),如String、Object、Function等;

2,JavaScript運行期的宿主對象(環境宿主級對象),如window、document、body等。

我們所說的使用內置對象,是指通過JavaScript語言原生對象的構造方法,實例化出一個新的對象。如:

複製代碼 代碼如下:

var str = new String(“實例初始化String”);

var str1 = “直接賦值的String”;

var func = new Function(“x”,”alert(x)”);//示例初始化func

var o = new Object();//示例初始化一個Object

二、使用JSON符號

(i)何謂JSON ?

JSON (JavaScript Object

Notation)即JavaScript對象命名,是一種輕量級的數據交換格式,易於閱讀和編寫,同時也易於及其解析和生成。它基於

《JavaScript Programming Language, Standard ECMA-262 3rd Edition –

December 1999》的一個子集。JSON是完全獨立於語言的文本格式,因此成為數據交換的理想格式。

JSON作為

JavaScript的一個自己,同時ActionScript、C、C#、ColdFusion、E、Java、JavaScript、ML、

ObjectiveCAML、Perl、PHP、Python、Rebol、Ruby、Lua等一系列的語言都提供支持,使得JSON成為Ajax開發的

首選方案。

JSON有兩種構建方式,一種是採用簡單的「鍵/值對」的集合,在不同的語言中被理解為對象、記錄、結構、字典、哈希表、有鍵列表,或者關聯數組等,另一種採用有序的值列表,大部分語言把它理解為數組。

常用的創建方式是第一種,即採用「鍵/值對」集合的形式。在這種形式下,一個對象以「{」(左括弧)開始,「}」(右括弧)結束。每個「名稱」後跟一個「:」(冒號),「

『鍵/值’ 對」之間使用「,」(逗號)分隔。

JSON具有以下特點:(1)簡單格式化的數據交換;(2)易於人們的讀寫習慣;(3)易於機器的分析和運行。

在JavaScript中,JSON被理解為對象。通過字元串形式的JSON,數據可以很方便地解析成JavaScript獨享,並進行數據的讀取傳遞。通過JSON,在一定程度上客服了JavaScript對象無法作為參數系列化傳遞的問題。

1,簡單的JSON

{name:”劉德華”,age:”25″,sex:”男”}

2,JSON值的類型

JSON的值可以是簡單的數據類型,例如數字、浮點、字元等,也可以是數組及對象。例如以數組作為member鍵值的JSON:

{member:[{name:”劉德華”},{name:”郭富城”},{name:”張學友”},{name:”黎明”}]}

{

book:[{name:”三國演義”},{name:”西遊記”},{name:”水滸傳”},{name:”紅樓夢”}],

author:[{name:”羅貫中”},{name:”吳承恩”},{name:”施耐安”,{name:”曹雪芹”}}]

}

3,在JavaScript中使用JSON

JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON數據不需要任何特殊的API或者工具包,JavaScript默認將JSON當做一個對象處理。

將對象傳遞給一個變數,例如:

複製代碼 代碼如下:

var somebooks = {

book:[{name:”三國演義”},{name:”西遊記”},{name:”水滸傳”},{name:”紅樓夢”}],

author:[{name:”羅貫中”},{name:”吳承恩”},{name:”施耐安”,{name:”曹雪芹”}}]

}

JSON的每個「鍵」相當於對象的屬性,例如訪問book中的第一個條目,在JavaScript中,就可以簡單地使用「somebooks.book[0].name」來獲取「三國演義」這個值。

我們不但可以將一個JSON字元串轉化為對象,反過來將一個對象「編譯」為一個JSON字元串,以方便JavaScript中的對象的傳輸。例如:

複製代碼 代碼如下:

var Animals = new Object();

Animals.name = “dog”;

Animals.sex = “Male”;

Animals.age = “2”;

Animals對象無法被序列化傳輸,將Animals對象轉化為JSON字元串,也就是「{name:”dog”,sex:”Male”,age:”2″}」。這樣,把該JSON字元串作為HTTP請求的一個參數傳遞,從而達到序列化傳輸Animals對象的目的。

(ii)JSON通過字元串形式來表達JavaScript的對象。如:

複製代碼 代碼如下:

var myObject = {nickname:”my girlfried”,name:”big

pig”};

JSON

實際上充當了一種在JavaScript對象和字元串之間實現相互轉換的協議。由於JSON的「外表」可以看成但村的字元串,因此JSON在

JavaScript的對象傳輸方面可以起到一定的作用。例如把對象strObject轉換成字元串後進行傳輸,在達到目的地後通過eval方法將其還原

成對象:

複製代碼 代碼如下:

function test (o)

{

alert (o.name)

}

var strObject = ‘{nickname:”my girlfriend”,name:”big pig”}’;

test (eval_r(“(” + strObject + “)”));

三、自定義對象構造

創建高級對象構造有兩種方式:使用「this」關鍵字構造、使用原型prototype構造。如:

複製代碼 代碼如下:

//使用this關鍵字定義構造的上下文屬性

function Girl()

{

this.name = “big pig”;

this.age = 20;

this.standing;

this.bust;

this.waist;

this.hip;

}

//使用prototype

function Girl(){}

Girl.prototype.name = “big pig”;

Girl.prototype.age = 20;

Girl.prototype.standing;

Girl.prototype.bust;

Girl.prototype.waist;

Girl.prototype.hip;

alert(new Girl().name);

上例中的兩種定義在本質上沒有區別,都是定義「Girl」對象的屬性信息。「this」與「prototype」的區別主要在於屬性訪問的順序。如:

複製代碼 代碼如下:

function Test()

{

this.text = function()

{

alert(“defined by this”);

}

}

Test.prototype.test = function()

{

alert(“defined by prototype”);

}

var _o = new Test();

_o.test();//輸出「defined by this」

當訪問對象的屬性或者方法是,將按照搜索原型鏈prototype

chain的規則進行。首先查找自身的靜態屬性、方法,繼而查找構造上下文的可訪問屬性、方法,最後查找構造的原型鏈。

「this」

與「prototype」定義的另一個不同點是屬性的佔用空間不同。使用「this」關鍵字,示例初始化時為每個實例開闢構造方法所包含的所有屬性、方法

所需的空間,而使用「prototype」定義,由於「prototype」實際上是指向父級的一種引用,僅僅是個數據的副本,因此在初始化及存儲上都比

「this」節約資源。

javaScript中的面向對象

面向對象是一個很大的概念的,面向對象分析(00A),面向對象設計(00D),面向對象編程(OOP),這是解決問題的分析,設計方法,也是一種編程風格,而JS並非一門OOPLs(面向對象編程語言),所以很多的術語並不支持的.它是基於W3C的DOM模型,而形成的基於對象(這好像是一種中庸的說法)語言的!只有運行態,沒有編譯等這些過程,所以有些內容是根本無法實現的!

所以對於javascript只餘下了我們的編程風格而已,用這種去模擬實現對象.而不是語言本身的支持.你可以參考一下我的百度blog,只有JS面向對象的本質說明,與編程對JS模擬對象的常用手法的!

javascript是一種面向對象語言嗎

是的,js是基於對象的,連他的function函數都是一種對象。所以是面向對象的!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/282808.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:06
下一篇 2024-12-22 08:06

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • 面向對象編程、類和對象

    面向對象編程(Object-Oriented Programming, OOP)是一種編程方法,它將現實世界中的事物抽象為對象(Object),對象的屬性和方法被封裝成類(Clas…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 使用面向對象程序設計方法改寫猜數字遊戲Python程序

    本文將從以下多個方面對猜數字遊戲程序功能要求,使用面向對象程序設計方法改寫該程序Python做詳細的闡述。 一、遊戲規則 1、遊戲開始時,程序隨機生成一個 1 到 100 之間的整…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • 使用JavaScript日期函數掌握時間

    在本文中,我們將深入探討JavaScript日期函數,並且從多個視角介紹其應用方法和重要性。 一、日期的基本表示與獲取 在JavaScript中,使用Date對象來表示日期和時間,…

    編程 2025-04-28
  • JavaScript中使用new Date轉換為YYYYMMDD格式

    在JavaScript中,我們通常會使用Date對象來表示日期和時間。當我們需要在網站上顯示日期時,很多情況下需要將Date對象轉換成YYYYMMDD格式的字元串。下面我們來詳細了…

    編程 2025-04-27

發表回復

登錄後才能評論