javascript物件導向是什麼? js中物件的理解
本篇文章帶給大家的內容是關於javascript物件導向是什麼? js中物件的理解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
1、物件導向
物件導向的語言最基本的標誌就是類別的概念。什麼是類別?類別是包含多個屬性和方法的集合,類別的實例即物件。
因為歷史原因,ECMAScript(後面簡稱JS)中物件的概念與基於類別的語言的物件有所不同。 ECMA-262 中把物件定義為「無序屬性的集合,其屬性可以包含基本值、物件或函數」。
每個物件都是基於一個引用類型所建立的。
2、理解物件
2.1、JS中建立物件有兩種方式:
// 第一种:创建Object实例 var person = new Object(); person.name = 'tom'; person.age = 20; person.sayIt = function(){console.log(this.name, this.age)} // 第二种:对象字面量值 var person = { name: 'tom', age: 20, sayIt: function(){console.log(this.name, this.age)} }
上面兩個範例所建立的物件是一樣的,都有相同的屬性和方法。
2.2、資料屬性和存取器屬性
JS物件的鍵(即name、sayIt這種屬性和方法)分為兩種類型的屬性:數據屬性和存取器屬性。
2.2.1、資料屬性
資料屬性包含一個資料值的位置,在這個位置可以讀取和寫入值。包含以下4個特性:
Configurable:表示能否delete刪除屬性、該屬性描述符的類型能否被改變。預設值為false,建立實例不指定該值時會預設為true。
Enumerable:表示屬性是否可枚舉(for-in)。預設值為false,建立實例不指定該值時會預設為true。
Writable:表示屬性值是否可修改。預設值為false,建立實例不指定該值時會預設為true。
Value:表示屬性的值。預設值為undefined,建立實例不指定該值時會預設為undefined。
如建立實例:
var person = { name: 'tom' }
person物件的屬性name的資料屬性Configurable、Enumerable、Writable均為true,即name屬性可刪除、可列舉、可改寫值,name屬性的當前值為'tom'。
想要修改屬性的資料屬性,可以透過ES5提供的Object.defineProperty()方法,這個方法也可以為物件新增一個屬性,該方法有三個參數:目標對象,要定義或修改的屬性的名稱,需要定義或修改的資料屬性
下面修改person實例的name屬性:
var person = { name: 'tom' } Object.defineProperty(person, 'name', { configurable: false, enumerable: false, writable: false, value: 1 }) console.log(person.name); // 1,name属性的值已修改为1 delete person.name; console.log(person.name); // 1, name属性依然存在 for(var i in person){ console.log(i); // undefined,name属性不可枚举 } person.name = 2; console.log(person.name); // 1,name的值依然为1,不可修改
注意:Object.defineProperty()方法在設定configurable為false後不能在修改除writable之外的特性。
2.2.2、存取器屬性
存取器屬性沒有資料值,只有兩個函數:
getter函數,取得有效值
setter函數,設定有效值
存取器屬性的常用使用方式就是透過設定一個屬性的值來改變其他屬性,存取器屬性同樣包含4個特性:
Configurable:表示能否delete刪除屬性、該屬性描述符的類型能否被改變。預設值為false,建立實例不指定該值時會預設為true。
Enumerable:表示屬性是否可枚舉(for-in)。預設值為false,建立實例不指定該值時會預設為true。
Get:在讀取屬性時呼叫的函數,預設值為undefine。
Set:寫入屬性時呼叫的函數,預設值為undefine。
var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function(){ return this._year; }, set: function(newValue){ if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book.year = 2005; console.log(book.edition); //2
其中year即為存取器屬性,_year是資料屬性。 存取器屬性year的Configurable和Enumerable未設置,所以是false,即存取器屬性year不可刪除、不可枚舉。
可以透過Object.getOwnPropertyDescriptor()方法讀取屬性的特性:
var descriptor = Object.getOwnPropertyDescriptor(book, '_year'); console.log(descriptor.writable); // true console.log(descriptor.configurable); // true
總結:
javasc的物件即為多個屬性與方法的集合的實例,其屬性分為資料屬性和存取器屬性兩種類型,可以透過Object提供的各種方法讀取、修改物件的屬性。
相關推薦:
以上是javascript物件導向是什麼? js中物件的理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
