国产探花免费观看_亚洲丰满少妇自慰呻吟_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);

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

圖片精選

主站蜘蛛池模板: 六枝特区| 香港 | 萨嘎县| 文昌市| 墨脱县| 盖州市| 若尔盖县| 称多县| 瑞安市| 陆川县| 榆林市| 彭阳县| 莫力| 无锡市| 舞钢市| 闽清县| 红桥区| 聂拉木县| 资中县| 天门市| 湖南省| 贵州省| 金湖县| 凤冈县| 贺兰县| 梁平县| 江源县| 綦江县| 历史| 鄂托克前旗| 壤塘县| 西乡县| 平顶山市| 逊克县| 新民市| 阜城县| 全州县| 澎湖县| 太仆寺旗| 山阴县| 双鸭山市|