js的原型和原型鏈

2021-10-03 11:16:22 字數 1727 閱讀 8593

1.首先 先搞清楚原型

person是乙個建構函式,我們new了乙個例項person

function person() 

var person = new person();

person.name = '大柱';

console.log(person.name) // 大柱

prototype(每個函式都有乙個 prototype 屬性

//物件person1,person2 name屬性並未賦值,都從原型(person.prototype)"繼承"屬性

person.prototype.name = '大柱';

var person1 = new person();

var person2 = new person();

console.log(person1.name) // 大柱

console.log(person2.name) // 大柱

proto(每乙個物件(除了 null )都具有的乙個proto屬性,指向該物件的原型)

var person = new person();

console.log(person.__proto__ === person.prototype); // true

所以我們可以理解為 通過person建構函式例項化的物件的原型指向就是該建構函式的原型

constructor(每個原型都有乙個 constructor 屬性指向關聯的建構函式

console.log(person === person.prototype.constructor); // true
例項與原型的關係

person.prototype.name = '大柱';

var person = new person();

person.name = '建國';

console.log(person.name) // 建國

delete person.name;

console.log(person.name) // 大柱

給例項 person 新增 name 屬性,列印 person.name 的時候,結果自然為 建國。

刪除了 person 的 name 屬性時,讀取 person.name,從 person 物件中找不到 name 屬性就會從 person 的原型(person.proto/person.prototype) 中查詢,結果便是我們一開始給person原型的name屬性賦值的「大柱」。

原型與原型

原型的原型指向(proto)object.prototype

2.什麼是原型鏈

console.log(object.prototype.__proto__ === null) // true
我們把這個有proto串起來的直到object.prototype.proto為null的鏈叫做原型鏈。原型鏈的形成是真正是靠proto 而非prototype

JS原型和原型鏈

建立建構函式 function word words word.prototype 建立例項 var w new word hello world w.print function w.print hello world w.alert hello world function.prototype....

js原型鏈和原型

1 原型 在js中一切皆物件,那原型也是乙個物件,通過原型可以實現物件的屬性繼承,js的物件中包含著乙個 prototype 內部屬性,這個屬性所對應的就是物件的原型。prototype 作為物件的內部屬性不能被直接訪問,所以為了方便檢視乙個物件的原型,提供了 proto 這個非標準的訪問器,在js...

JS 原型和原型鏈

先宣告乙個建構函式 function people name,age 把類的方法寫在建構函式原型物件中,子類就不能再通過呼叫父類建構函式來繼承方法 屬性還是可以繼承 給people的原型新增方法 people.prototype.speak function 建立子類繼承people functio...