建立的每乙個函式其實都有乙個prototype 屬性,這個屬性是乙個指標,指向乙個物件,這個物件的用途是包含可以由特定型別的所有例項共享的屬性和方法,換句話說就是,這個物件的屬性和方法被由這個函式建立的所有例項共享。prototype是通過呼叫建構函式而建立的那個物件例項的原型物件。prototype 物件被稱為這些例項的原型物件。
function
person()
person.prototype.name =
'lisa'
person.prototype.age =
32 person.prototype.job =
'driver'
person.prototype.
sayname
=function()
var person1 =
newperson()
person1.
sayname()
var person2 =
newperson()
person2.
sayname
()
將sayname()方法和所有屬性直接新增到了person的prototype屬性中,建構函式變成了空函式。即便如此,也仍然可以通過呼叫建構函式來建立新物件,而且新物件還會具有相同的屬性和方法。但是與建構函式模式不同的是,新物件的這些屬性和方法是由所有例項共享的。person1和person2訪問的都是同一組屬性和同乙個sayname函式。
person.prototype.constructor 指向 person()
person.prototype.language=
"english"
;
注意
雖然可以通過物件例項訪問儲存在原型中的值,但是卻不能通過例項物件重寫原型中的值。
如果在例項中新增了乙個屬性,並且該屬性與原型例項中的乙個屬性同名,那麼就在例項中建立該屬性,該屬性會遮蔽掉原型中的那個屬性。
當為物件例項新增乙個屬性時,這個屬性就會遮蔽原型物件中儲存的同名屬性,即使將這個屬性設定為null,也只會在例項中設定這個屬性,而不會恢復其指向原型的鏈結。這時,可以使用delete操作符完全刪除例項的屬性,從而能夠重新訪問原型中的屬性。
delete方法 刪除例項屬性
person1.name =
"tom"
delete person1.name
bool hasownproperty()方法 檢測乙個屬性是存在於例項中,還是存在與原型中 JS高階程式設計閱讀筆記 元素大小
元素的可見大小由其高度,寬度決定,包括所有內邊距,滾動條和邊款大小 注意,不包括外邊距 通過下列4個屬性可以取得元素的偏移量。其中,offsetleft和offsettop屬性與包含元素有關,包含元素的引用儲存在offsetparent屬性中。offsetparent屬性不一定與parentnode...
閱讀任務 閱讀筆記 4
功能驅動的設計 1 構造總體模型 2 構造功能列表 3 制定開發計畫 4 功能設計階段 5 實現具體功能 軟體測試按目的分類 1 功能測試 2 非功能測試 軟體測試的各種方法 1 單元測試和 覆蓋率測試 2 構建驗證測試 3 驗收測試 4 探索式的測試 5 回歸測試 6 場景 整合 系統測試 7 夥...
JS高階程式設計閱讀筆記 函式柯里化
函式柯里化是什麼?函式柯里化是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數而且返回結果的新函式的技術 普通的add函式 function add x,y currying後 function curryingadd x add 1,2 3 curr...