js基礎 原型

2021-10-19 14:24:18 字數 2749 閱讀 4844

<

!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上新增方法,不能直接操作隱式原...