javascript對象和原型對象學習筆記

前言

學習瞭解JavaScript對象的繼承機制api

JavaScript Object

概念

Object是js的基本數據結構的一種,屬於引用類型。瀏覽器

對象的建立方法

  1. 對象字面量寫法數據結構

  2. 構造函數,經過構造函數來建立對象實例函數

  3. Object()構造函數學習

  4. create()方法this

// 對象字面量
let person1 = {name: 'jim'}; 
// 構造函數
function Person(name) {
    this.name = name;
    this.greeting = function() {
        console.log('hello my name is ' + this.name);
    }
}
let person2 = new Person('Bob');
console.log(person2.name);
console.log(person2.greeting());
// Object() 方法
let person3 = new Object();
person3.name = 'kobe';
console.log(person3.name);
person3 = new Object({
    name: 'kobe2',
    age: 22
});
console.log(person3.name);
// create() 方法 相似構造函數 
let person4 = Object.create(person3);
person4.name = 'kobe3';
console.log(person4.name,person3.name);

對象屬性的訪問方式

  1. 點表示法spa

  2. 中括號表示法prototype

let person = {
    name: 'xiaofei',
    age: 20
}
console.log(person.name);
console.log(person['age']);

__proto__、[[prototype]]、prototype

  1. JavaScript對象經過原型機制從其餘對象繼承功能特性code

  2. 每一個對象有一個私有屬性[[prototype]],這個私有屬性持有一個鏈接到另外一個稱爲其prototype對象(原型對象)的連接。對象

  3. __proto__是瀏覽器對ES語法[[prototype]]的實現api

  4. prototype屬性指向的對象就是實例對象的原型對象即__proto__所指引的對象

  5. 原型鏈,原型對象也可能擁有原型,並從中繼承方法和屬性,一層一層、以此類推。這種關係常被稱爲原型鏈 (prototype chain),它解釋了爲什麼一個對象會擁有定義在其餘對象中的屬性和方法。

例1
clipboard.png

例2 經過原型鏈來檢測對象所調用的方法是否存在,存在在哪一個原型對象上

clipboard.png
person1除了name,age在對象對象中存在外,其餘方法都是經過原型鏈的方法在Object上找到並調用。
原型鏈

相關文章
相關標籤/搜索