鍍金池/ 教程/ HTML/ 淺談 javascript 面向?qū)ο蟪绦蛟O計
淺談 JavaScript 之事件綁定
淺談 javascript 中字符串 String 與數(shù)組 Array
淺談 javascript 中基本包裝類型
淺談 JavaScript Math 和 Number 對象
淺談 Javascript 的靜態(tài)屬性和原型屬性
淺談 JavaScript 中定義變量時有無 var 聲明的區(qū)別
淺談 JavaScript Array 對象
淺談 JavaScript 函數(shù)參數(shù)的可修改性問題
淺談 javascript 中的 instanceof 和 typeof
淺談 JavaScript 中 Date (日期對象),Math 對象
淺談 Javascript 執(zhí)行順序
淺談 javascript 函數(shù)屬性和方法
淺談 JavaScript 中面向?qū)ο蠹夹g的模擬
淺談 javascript 的原型繼承
淺談 javascript 事件取消和阻止冒泡
根據(jù)一段代碼淺談 Javascript 閉包
淺談 Javascript 面向?qū)ο缶幊?/span>
淺談 javascript 六種數(shù)據(jù)類型以及特殊注意點
淺談 Javascript 變量作用域問題
淺談 javascript 函數(shù)內(nèi)部屬性
淺談 javascript 中自定義模版
淺談 JavaScript 字符集
淺談 javascript 面向?qū)ο缶幊?/span>
淺談 JavaScript 框架分類
淺談 JavaScript 中的 Math.atan() 方法的使用
淺談 Javascript 數(shù)組與字典
淺談 JavaScript 數(shù)據(jù)類型及轉(zhuǎn)換
淺談 javascript 的調(diào)試
淺談 Javascript 嵌套函數(shù)及閉包
淺談 javascript 回調(diào)函數(shù)
淺談 JavaScript Date 日期和時間對象
淺談 Javascript 中的 Function 與 Object
淺談 JavaScript 數(shù)據(jù)類型
淺談 javascript 中 this 在事件中的應用
淺談 javascript 中的閉包
淺談 javascript 函數(shù)劫持
淺談 Javascript 中深復制
淺談 JavaScript 函數(shù)節(jié)流
淺談 JavaScript 中的 String 對象常用方法
淺談 JavaScript 事件的屬性列表
淺談 JavaScript 函數(shù)與棧
淺談 JavaScript 的事件
淺談 javascript 中的作用域
淺談 JavaScript 的執(zhí)行效率
淺談 Javascript 事件模擬
淺談 JavaScript function 函數(shù)種類
淺談 javascript 歸并方法
淺談 javascript 迭代方法
淺談 JavaScript 編程語言的編碼規(guī)范
淺談 JavaScript 實現(xiàn)面向?qū)ο笾械念?/span>
淺談 Javascript 鼠標和滾輪事件
淺談 Javascript Base64 加密解密
淺談 Javascript 中勻速運動的停止條件
淺談 javascript 實現(xiàn)八大排序
淺談 javascript 的分號的使用
淺談 javascript 中 createElement 事件
淺談 javascript 的數(shù)據(jù)類型檢測
淺談 javascript 對象模型和 function 對象
淺談 Javascript 如何實現(xiàn)勻速運動
淺談 JavaScript 字符串與數(shù)組
淺談 javascript 面向?qū)ο蟪绦蛟O計
淺談 Javascript 事件處理程序的幾種方式

淺談 javascript 面向?qū)ο蟪绦蛟O計

ECMA-262 把對象定義為:“無序?qū)傩缘?集合,其屬性可以包含基本值、對象或者函數(shù)”

理解對象,最簡單的方式就是通過創(chuàng)建一個 Object 的實例,然后為它添加屬性和方法

[js] view plaincopy
var person = new Object();  

        person.name = "Xulei";  

        person.age = "23";  

        person.job = "前端工程師";  

        person.sayName = function () {  

            alert(this.name);  

        }  

還可以這樣寫

[js] view plaincopy
var person = {  

            name: "xulei",  

            age: 23,  

            job: "前端工程",  

            sayName: function () {  

                alert(this.name)  

            }  

        }  

屬性類型:數(shù)據(jù)屬性和訪問其屬性

數(shù)據(jù)屬性,有4個描述其行為的特性

[Configurable]:表示能否通過 delete 刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問器屬性,默認值為true

[Enumerable]:表示能否通過 for-in 返回屬性,默認值為 true

[Writable]:表示能否修改屬性,默認值為 true

[Value]:包含這個屬性的數(shù)據(jù)值。默認值為 undefined

[js] view plaincopy
var person = {  

            name: "xulei"  

        }  

這里創(chuàng)建了一個 person 對象,value 值就是 “xulei”

要修改屬性的默認特性,必須使用 ECMAScript5的Object.defineProperty (屬性所在的對象,屬性的名字,描述符對象)

描述符對象必須是 configurable、enumerable、writable、value

[js] view plaincopy
var peron = {}  

        Object.defineProperty(peron, "name", {  

            writable: false,//屬性不能被修改  

            value: "徐磊-xulei"  

        });  
        alert(peron.name);//徐磊-xulei  

        peron.name = "徐磊";  

        alert(peron.name);//徐磊-xulei  

以上操作在非嚴格模式下賦值操作會被忽略,如果在嚴格模式下會拋出異常

一旦把屬性定義為不可配置的就不能把它變回可配置的了。

在多數(shù)情況下都沒有必要利用 Object.defineProperty() 方法提供的這些高級功能。但是對理解 javascript 非常有用。

建議讀者不要在 ie8 上使用此方法。

訪問其屬性,有4個特性

[Configurable]:表示能否通過 delete 刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為訪問器屬性,默認值為 true

[Enumerable]:表示能否通過 for-in 返回屬性,默認值為 true