學習瞭解JavaScript對象的繼承機制api
Object是js的基本數據結構的一種,屬於引用類型。瀏覽器
對象字面量寫法數據結構
構造函數,經過構造函數來建立對象實例函數
Object()構造函數學習
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);
點表示法spa
中括號表示法prototype
let person = { name: 'xiaofei', age: 20 } console.log(person.name); console.log(person['age']);
JavaScript對象經過原型機制
從其餘對象繼承
功能特性code
每一個對象有一個私有屬性[[prototype]]
,這個私有屬性持有一個鏈接到另外一個稱爲其prototype
對象(原型對象)的連接。對象
__proto__
是瀏覽器對ES語法[[prototype]]
的實現api
prototype
屬性指向的對象就是實例對象的原型對象即__proto__
所指引的對象
原型鏈,原型對象也可能擁有原型,並從中繼承方法和屬性,一層一層、以此類推。這種關係常被稱爲原型鏈 (prototype chain),它解釋了爲什麼一個對象會擁有定義在其餘對象中的屬性和方法。
例1
例2 經過原型鏈來檢測對象所調用的方法是否存在,存在在哪一個原型對象上
person1除了name,age在對象對象中存在外,其餘方法都是經過原型鏈的方法在Object上找到並調用。