1、字面量
var o1 =
;var o2 =
newobject()
;
2、通過建構函式
varm=
function
(name)
;var o3 =
newm
('o3'
);
3、通過object.create()方法
var p =
var o4 = object.
create
(p);
o4是空的,但是是乙個物件,原因是:建立的是例項的原型物件,即建立在o4.__proto屬性中了,o4.__proto__指向的就是p
建構函式
凡是通過new操作的函式都是建構函式
例項
o1/o2都是例項
建構函式可以通過new運算子生成乙個例項
原型
函式都有乙個prototype的屬性,宣告乙個函式的時候js會自動增加這個屬性
原型物件通過構造器constructor來指定是被哪個函式所引用
原型鏈
從乙個例項物件往上找構造這個例項相關的物件,該物件再往上找,直到object.prototype為止
原型鏈的工作原理
在原型物件上定義乙個公共方法,那麼通過建構函式建立的例項會共用這個方法
m
.prototype.
say=
function()
//o5與o3共用say方法,效果見下圖
例項物件的__proto__ === 屬性建構函式.prototype
instanceof判斷的是例項物件的__proto__ 屬性與建構函式.prototype兩者之間是否引用同乙個位址,是則true,否則false
注意:只要是這條原型鏈上的建構函式,instanceof判斷的都為true,原因見下圖
如果需要判斷原型物件是從哪個建構函式延伸出來的,那麼使用constructor屬性來判斷,如下圖
前端開發之原型與原型鏈
什麼是原型和原型鏈 1 原型分為顯式原型和隱式原型。顯示原型對應的是prototype屬性,隱式原型對應的是 proto 屬性。2 所有物件 萬物皆物件 都有 proto 屬性,包括函式 示例等,只有函式才有prototype屬性。3 prototype屬性值其實也是乙個物件,型別為object。它...
前端面試之原型鏈總結
凡事通過new function 建立的物件,都是函式物件,其他的都是普通物件。function person name,age,job var person1 new person 小花 12 好好學習 person1.sayname console.log person1.constructor...
javascript之原型,原型鏈
1.定義 原型是function物件的乙個屬性,它定義了建構函式製造出的物件的公共祖先。通過該建構函式產生的物件,可以繼承該原型的屬性和方法。原型也是物件。2.利用原型特點和概念,可以提取共有屬性。3.物件如何檢視原型 隱式屬性 proto 4.物件如何檢視物件的建構函式 constructor v...