js例項拷貝和屬性搜尋機制

2021-08-14 14:22:38 字數 1107 閱讀 8934

每當對建構函式

例項化的時候,該例項都會將建構函式的屬性重新拷貝乙份

(包括隱藏屬性,但私有的不會被拷貝);

什麼是私有的:

var fun = function()

fun.prototype =

}var xm = new fun()

console.log(xm.age)//結果為undefined

console.log(xm.name)//結果 小明

不管例項化多少次,原型物件都只有乙個---------原型屬性(方法)共享理論

那麼例項怎麼找到原型物件的方法呢?

屬性搜尋機制----先在自身屬性列表中尋找,如果找到直接返回,找不到就從原型中尋找

在例項中,隱藏屬性(__proto__)放置原型物件位址,相當於乙個指標,指向該例項建構函式的原型物件,在控制台中可以看到如下結果:

prototype與

_proto_的區別也在上圖中可以看出,

object的prototype是這個object物件的原型方法,而object的_proto_是指向object的上級建構函式

遮蔽:

當建構函式和原型都有相同的屬性時,原型的屬性被遮蔽,如果想訪問原型的,要加上prototype,通過建構函式獲取自身原型屬性fun1.prototype.name;

清除:通過delete實現

還有乙個有趣的點,會再後面介紹,值型別、引用型別相關,下面圖僅作興趣了解:

js中 object 屬性 和 例項屬性方法

object 物件具有以下屬性 不包括繼承的屬性和方法 屬性 prototype 對該物件的物件原型的引用。對於所有的物件,它預設返回 object 物件的乙個例項。它是乙個給類的物件新增方法的方法 object 物件例項 屬性 constructor 對建立物件的函式的引用 指標 對於object...

JS的深拷貝 與 淺拷貝 例項

js中的變數型別分為 基本型別 和 引用型別 對基本型別進行複製操作會對值進行乙份拷貝,而對引用型別賦值,則會進行位址的拷貝,最終兩個變數指向同乙份資料。基本型別 var a 1 var b a a 2 console.log a,b 2,1 a b指向不同的資料 引用型別 指向同乙份資料 var ...

js 靜態 原型 例項屬性

本篇來說一下js中的屬性 1 靜態屬性 2 原型屬性 3 例項屬性 靜態屬性 function klass var obj new klass klass.count 0 klass.count console.log obj.count undefined console.log klass.co...