1. 程式人生 > >原型和原型鏈的理解

原型和原型鏈的理解

pan log 構造 == object proto col on() t對象

1. 什麽是原型??

我的理解是:函數都有一個prototype屬性,這個屬性是一個指針,指向構造函數的原型對象一定要理解構造函數的原型對象,是構造函數的原型對象,不是構造函數Person

舉例說明:

function Person() {}

var stu = new Person();

構造函數Person有一個prototype屬性,而Person的prototype指向的是一個Object對象,這個Object對象就被稱為原型對象。

在舉一個例子

function People() {
console.log("人類的祖先");
}
function Person() {
console.log("人類的誕生");
}
Person.prototype = People;

var stu = new Person();

這裏構造函數Person有一個prototype屬性,而Person的prototype指向的是一個People的。即People是一個原型對象。

Person.prototype == stu.__proto__; //實例的隱式原型 === 該構造函數的原型對象

__proto__是隱式原型

prototype是顯示原型

來舉個小例子來說明 Person.prototype == stu.__proto__;

function People() {
console.log("人類的祖先");
}
function Person() {
console.log("人類的誕生");
}
Person.prototype = People;

var stu = new Person();
console.log(Person.prototype == stu.__proto__);

技術分享

function Person() {}

var stu = new Person();

stu是一個實例,可以通過stu.__proto__去訪問構造函數的原型對象,構造函數Person的原型對象是一個Object。技術分享

技術分享

原型和原型鏈的理解