国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS面向對象的程序設計相關知識小結

2024-05-06 15:33:49
字體:
來源:轉載
供稿:網友

面向對象的語言有一個標志,即擁有類的概念,抽象實例對象的公共屬性與方法,基于類可以創建任意多個實例對象,一般具有封裝、繼承、多態的特性!但JS中對象與純面向對象語言中的對象是不同的,ECMA標準定義JS中對象:無序屬性的集合,其屬性可以包含基本值、對象或者函數。可以簡單理解為JS的對象是一組無序的值,其中的屬性或方法都有一個名字,根據這個名字可以訪問相映射的值(值可以是基本值/對象/方法)。

一、理解對象:

第一種:基于Object對象

var person = new Object();person.name = 'My Name';person.age = 18;person.getName = function(){  return this.name;}

第二種:對象字面量方式(比較清楚的查找對象包含的屬性及方法)

var person = {  name : 'My name',  age : 18,  getName : function(){    return this.name;  }}

JS的對象可以使用‘.'操作符動態的擴展其屬性,可以使用'delete'操作符或將屬性值設置為'undefined'來刪除屬性。如下:

person.newAtt='new Attr';//添加屬性alert(person.newAtt);//new Attrdelete person.age;alert(person.age);//undefined(刪除屬性后值為undefined);

二、對象屬性類型

ECMA-262第5版定義了JS對象屬性中特征(用于JS引擎,外部無法直接訪問)。ECMAScript中有兩種屬性:數據屬性和訪問器屬性

1、數據屬性:

數據屬性指包含一個數據值的位置,可在該位置讀取或寫入值,該屬性有4個供述其行為的特性:

[[configurable]]:表示能否使用delete操作符刪除從而重新定義,或能否修改為訪問器屬性。默認為true;

[[Enumberable]]:表示是否可通過for-in循環返回屬性。默認true;

[[Writable]]:表示是否可修改屬性的值。默認true;

[[Value]]:包含該屬性的數據值。讀取/寫入都是該值。默認為undefined;如上面實例對象person中定義了name屬性,其值為'My name',對該值的修改都反正在這個位置

要修改對象屬性的默認特征(默認都為true),可調用Object.defineProperty()方法,它接收三個參數:屬性所在對象,屬性名和一個描述符對象(必須是:configurable、enumberable、writable和value,可設置一個或多個值)。

如下:(瀏覽器支持:IE9+、Firefox 4+、Chrome、Safari5+)

var person = {};Object.defineProperty(person, 'name', {  configurable: false,  writable: false,  value: 'Jack'});alert(person.name);//Jackdelete person.name;person.name = 'lily';alert(person.name);//Jack

可以看出,delete及重置person.name的值都沒有生效,這就是因為調用defineProperty函數修改了對象屬性的特征;值得注意的是一旦將configurable設置為false,則無法再使用defineProperty將其修改為true(執行會報錯:can't redefine non-configurable property);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 陈巴尔虎旗| 慈溪市| 资兴市| 红安县| 宿州市| 宜城市| 驻马店市| 含山县| 顺平县| 独山县| 大城县| 常山县| 米林县| 揭东县| 安化县| 高陵县| 洛阳市| 交口县| 堆龙德庆县| 乐山市| 韩城市| 沙雅县| 建阳市| 双桥区| 图片| 乌苏市| 明水县| 长汀县| 林西县| 娄底市| 永新县| 睢宁县| 上栗县| 滦平县| 南溪县| 芒康县| 辽宁省| 资兴市| 江阴市| 霍山县| 新竹县|