[第二講] JavaScript 的對象淺析

簡述:

JavaScript 并沒有強制一個類的概念, 可以把對象理解成一個屬性的集合, 對象的屬性和方法是可以動態(tài)進行增刪的.

1.對象

1.1對象的屬性

屬性是由鍵值對組成的, 屬性key是一個字符串, 屬性value 可以是任意 Javascript類型

var jack = new Object();
jack.name = "jack";
jack.age = 16;
jack.birthday = new Date(1990, 10, 10);

在獲取屬性的時候可以通過 (.) 也可以通過 ([]) 去訪問一個屬性. 但注意通過([])訪問的時候需要傳入字符串:


讀取Object屬性示例

1.2屬性的作用域

在 JavaScript 初始化的時候會創(chuàng)建一個全局對象, 即 window.

var globalData = "username"

function func(id){
  var element = document.getElementById(id);

  return element;
}

以上代碼塊與下方代碼塊的作用完全相同

window.globalData = "username"
window.func = function(id){
   var element = document.getElementById(id);

    return element;
}

注意: 全局變量即可以理解為全局對象window的屬性

1.3 prototype原型

JavaScript 中對象的繼承關系是依據原型來實現的. 每個對象都會有一個 prototype 的屬性, 這個 prototype 本身就是一個對象,因此 prototype 屬性對應的對象也有自己的 prototype 對象.

JavaScript訪問屬性的規(guī)則:

訪問一個屬性的時候, 解析器需要從下向上遍歷這個鏈結構, 直到遇到該屬性, 則返回這個值, 如果遇到 prototype 為null, 則判定這個對象沒有這個屬性, 則返回 undefined.

屬性與繼承關系示例:

//基類
function Base(name){
    this.name = name;
    this.getName = function(){
        return this.name;
    }
}

//子類
function SubClass(id){
    this.id = id;
    this.getId = function(){
      return this.id;
    }
}

//指定Base 和 SubClass的繼承關系
SubClass.prototype = new Base("base");

代碼執(zhí)行結果:

通過對 SubClass 指定 prototype,則 創(chuàng)建的 SubClass 的對象的 proto 屬性對應于 prototype 對象.

注意: 通過function來創(chuàng)建的對象, 默認 prototype 為 Object

1.4 this 指針

在 JavaScript 中, this 表示當前上下文(content), 即是對當前調用則的引用, 而非當前對象本身.

var name = "global"; //全局對象對應的屬性
//定義全局的函數對象
window.printName = function(){
    return this.name;
}

var tom = {
    name : "tom"
}

var jerry = {
  name : "jerry"
}

//打印執(zhí)行結果
printName.call(tom);
printName.call(jerry);
printName();

執(zhí)行結果:

2. 對象的創(chuàng)建

創(chuàng)建Js 的對象有三種方式:

  • 通過 new 操作符作用于 Object 對象, 構造一個新的對象, 然后動態(tài)地添加屬性,
  • 定義一個 構造函數 , 然后使用 new 進行對象的創(chuàng)建.
  • 使用對象字面量, 創(chuàng)建一個對象.

使用對象字面量創(chuàng)建對象:

var object = {
    name : "devin",
    age : 26
};

Json 可以直接轉成 Js 對象

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容