JavaScript的創(chuàng)建對(duì)象方式主要有兩種:
屬性類型之高級(jí)功能(修改屬性默認(rèn)特性)
主要通過(guò)Object.defineProperty()方法創(chuàng)建
configurable:屬性是否可以刪除
enumerable:屬性是否可以用for-in進(jìn)行循環(huán)
writable:是否可以修改屬性
value:要修改默認(rèn)特性的值
構(gòu)造函數(shù)
函數(shù)名首字母一般都用大寫字母颤霎,其他函數(shù)都用小寫
xxx.prototype.xxx:指向原型模式陕见,共享實(shí)例的所有屬性和方法
.isPrototypeOf:確定對(duì)象之間是否存在原型模式的指向
.hasOwnProperty:返回true說(shuō)明該屬性訪問(wèn)的是實(shí)例屬性好爬,false訪問(wèn)的是原型模式屬性
確定原型和實(shí)例的關(guān)系
(說(shuō)實(shí)話扒俯,這個(gè)比java繼承復(fù)雜多了,迷迷糊糊有點(diǎn)懂一疯,又有點(diǎn)不懂撼玄。。墩邀。)
方法一:
alert(instance instanceof Object)
alert(instance instanceof 被繼承的函數(shù))
alert(instance instanceof 繼承的函數(shù))
方法二:
alert(Object.prototype.isPrototypeOf(instance));
alert(被繼承的函數(shù).prototype.isPrototypeOf(instance));
alert(繼承的函數(shù).prototype.isPrototypeOf(instance));
子類型需要覆蓋超類型的某個(gè)方法掌猛,一定要寫在替換原型的語(yǔ)句之后。
注意:通過(guò)原型鏈實(shí)現(xiàn)繼承時(shí)眉睹,不能使用對(duì)象字面量創(chuàng)建原型方法荔茬,因?yàn)檫@樣做會(huì)重寫原型鏈