<
!doctype
html
>
<
html
lang
="en"
>
<
head
>
<
meta
charset
="utf-8"
>
<
meta
name
="viewport"
content
="width=device-width, initial-scale=1.0"
>
<
title
>
prototype
<
/title
>
<
script
>/*
原型prototype
1.我們所建立的每乙個函式,解析器都會向函式中新增乙個屬性prototype
2.這個屬性對應乙個物件,這個物件就是我們所謂的原型物件
3.如果我們的函式作為普通函式呼叫prototype沒有任何作用
4.當函式以構造函式呼叫時,它所建立的物件中都會有乙個隱含的屬性,
指向該建構函式的原型物件,我們可以通過下劃線__proto__來訪問屬性
5.原型物件就相當於乙個公共的區域,
所有同乙個類的例項都可以訪問到原型物件
我們可以將物件中共有的內容,統一設定到原型物件中
,當我們訪問物件的乙個屬性或方法時,它會先在自身中尋找,
如果有則直接使用,
如果沒有,則會去原型物件中尋找,如果找到則直接使用
6.以後我們建立建構函式時,可以將這些物件共有的屬性和方法,
統一新增到建構函式的原型物件中,這樣不用分別為每乙個物件新增,
也不會影響到全域性作用域,就可以使每個物件都具有這些屬性和方法*/
function
person()
console
.log
(person
.prototype);
//object
function
myclass()
}varmc=
newmyclass()
;//向mc中新增屬性amc.
a="我是mc中的a"
;console
.log
(myclass
.prototype==
person
.prototype);
//false
原型儲存指向不一致
document
.write(mc
.__proto__);
//[object,object
] document
.write(mc
.__proto__==
myclass
.prototype);
//true
原型儲存指向一致
document
.write(mc
.a);
mc.sayhello()
;//建立乙個建構函式
function
myclass()
//向myclass的原型中新增乙個name屬性
myclass
.prototype
.name
="我是原型中的名字"
;varmc=
newmyclass()
;mc.age=18
;console
.log(mc
.name);
//使用in檢查物件中是否含有某個屬性時,如果物件中沒有但是原型中有,也會返回
true
document
.write
("name"
inmc);
//可以使用hasownproperty()
來檢查物件自身中是否含有該屬性//
使用該方法只有物件自身中含有屬性時,才會返回
true
console
.log(mc
.hasownproperty
("age"))
;console
.log(mc
.__proto__
.hasownproperty
("hasownproperty"))
;/*原型物件也是物件,所以它也有原型,
當我們使用乙個物件的屬性或方法時,會在自身中尋找
自身中如果有,則直接使用,如果沒有,則去原型物件中尋找
如果原型物件中有,則使用,如果沒有則去原型的原型中尋找
object物件的原型沒有原型,如果在object中依然沒有找到,
則返回undefined*/
console
.log(mc
.__proto__
.__proto__
.hasownproperty
("hasownproperty"))
;console
.log(mc
.__proto__
.__proto__);
<
/script
>
<
/head
>
<
body
>
<
/body
>
<
/html
>
js基礎 原型和原型鏈
原型是js中的乙個重要知識點,之前一直都原型一知半解,最近在做js的基礎梳理,感覺很有必要做一下關於原型和原型鏈的總結。一 普通物件和函式物件 了解原型,所有我們需要知道js中變數歸根到底是啥,可能大家都聽說過 萬物皆物件。但物件也會有一定區分,存在 普通物件 和 函式物件,區分規則 通過 new ...
JS原型鏈基礎
建立物件的方法 第一種方式 字面量 var o1 var o2 newobject 第二種方式 建構函式 varm function name var o3 newm o3 第三種方式 object.create 原型 建構函式 例項 原型鏈 結合上面的例子 m prototype.construc...
JS基礎 顯性原型和隱性原型
1 函式物件即函式的prototype原型屬性指向原型物件,在建立函式時便存在,預設為空object 2 例項物件的 proto 隱式原型在例項化建立例項時產生,值等於建構函式的顯式prototype原型屬性的值 3 開發時程式設計師操作顯式原型在原型prototype上新增方法,不能直接操作隱式原...