遇到的有關js繼承和原型鏈的乙個問題

2022-03-14 07:11:18 字數 599 閱讀 6952

function a(var1)

a.prototype =

var b=new a();

b.var1 = 2;

var c = new a();

console.log(b.var1); //輸出2

console.log(c.var1); //輸出undefined

function a()

a.prototype =

var b=new a();

b.var1 = 2;

var c = new a();

console.log(b.var1); //輸出2

console.log(c.var1); //輸出1

為什麼輸出不同,解釋如下:

對於第一段**:在例項化的過程中,b和c物件用到了a建構函式,那個var1都變成了b和c的自有屬性,所以列印 b或者c的 var1屬性的值的時候,直接從當前物件取值,而c的var1屬性沒有賦值,所以為undefined。

對於第二段**:var1是b物件的自有屬性而不是c的自有屬性,所以列印b的值就是直接列印的自有屬性的值2,而列印c則是列印的原型物件的值。

js原型鏈和繼承

在了解js原型鏈之前建構函式 原型物件 物件例項這幾種概念必須要明白。1.建立物件有幾種方法 原型鏈指向object var o1 var o11 new object 通過new來宣告物件 var m function 使用顯示的建構函式建立物件 var o2 new m var p var o3...

js的原型和原型鏈

所有引用型別 函式,陣列,物件 都擁有 proto 屬性 隱式原型 所有函式擁有prototype屬性 顯式原型 僅限函式 原型物件 擁有prototype屬性的物件,在定義函式時就被建立 建立建構函式 function human hname,hage human.prototype.intr f...

js的原型和原型鏈

1.首先 先搞清楚原型 person是乙個建構函式,我們new了乙個例項person function person var person new person person.name 大柱 console.log person.name 大柱prototype 每個函式都有乙個 prototype...