JS學習筆記 原型和物件

2021-10-07 06:41:04 字數 2779 閱讀 4928

// 建構函式

function

person

(***, age)

// 通過原型新增方法

person.prototype.

sayhi

=function()

;var per =

newperson

("男",20

);console.

log(per.__proto__.constructor == person.prototype.constructor)

;// 例項物件與建構函式的原型做對比 true

console.

dir(person)

;// 建構函式的結構

var per2 =

newperson

("女",30

);console.

log(per.sayhi==per2.sayhi)

;// true

// 例項物件中有兩個屬性(這兩個屬性是通過建構函式來獲取的)

// 建構函式中並沒有***和age兩個屬性

原型是本身在建構函式中定義的屬性和方法,當例項化物件的時候,例項物件中的屬性和方法都是在自己的空間中存在的,如果是多個物件。這些屬性和方法都會在單獨的空間中存在,浪費記憶體空間,所以,為了資料共享,把想要的節省空間的屬性或者方法寫在原型物件中,達到了資料共享,實現了節約記憶體空間的作用

// 建構函式

function

person

(age)

} person.prototype.*** =

"男";

// 屬性, 在原型中

person.prototype.

sayhi

=function()

;// 例項化物件同時初始化

var per =

newperson(18

);// console.log(per.__proto__.***); // 男

// per.__proto__.sayhi(); // 你好

console.

log(per.***)

;// 男

per.

sayhi()

;// 你好

person.prototype =

;// 為內建物件新增原型方法

string.prototype.

sayhi

=function()

;// 是乙個例項物件

var str =

"字串"

; str.

sayhi()

;// 例項物件呼叫屬性或者方法,屬性或者方法肯定是在建構函式中或者是建構函式的原型(prototype)中.

/*  建構函式.prototype.屬性 = 值;

* 建構函式.prototype.方法 = 值 --> 函式.prototype,函式也是物件,所以,裡面也有__proto__

* 例項物件.prototype --> 例項物件中沒有這個屬性,只有__proto__

** 簡單的原型寫法

* 缺陷: --> 新的知識點 -- 》 原型直接指向{} -->就是乙個物件, 沒有構造函器(constructor)

** 寫法:

* 建構函式.prototype =

** 通過原型為內建物件新增原型的屬性或者方法 -- > 原因:

* 系統的內建物件屬性和方法可能不滿足現在需求,所以,可以通過原型的方式加入屬性或者方法,為了方便開發。

* 為內建物件的原型中新增屬性和方法,那麼這個內建物件的例項物件就可以直接使用了

* string.prototype.方法 = 匿名函式;

* var str = "哈哈";

* str.方法 --->例項物件可以直接呼叫原型中的屬性或者方法

** string.prototype.anything = function(){};

* 凡是string的例項物件都可以呼叫剛剛加入的方法

*/

物件: 具體特質的某個事物,有特徵

(屬性)

和行為(方法)

如何建立物件?

通過呼叫new

object

(),還有

,自定義建構函式

建立物件的方式

1.呼叫系統object()

--->建立出來的物件都是object,不能很明確的指出這個物件是屬於什麼型別

var obj =

newobject()

;2. 字面量的方式

-->

只能建立乙個物件

(一次只能建立乙個)

var obj =

3. 工廠模式建立物件 --

-> 推論--

-> 自定義建構函式的方式

自定義建構函式

(優化後的工廠模式)

function

obj(

)// 例項化物件

var obj =

newobj()

;自定義建構函式建立物件:

4件事 1. 在記憶體中申請一塊空閒的空間,儲存建立的物件

2.this就是當前例項化的物件

3.設定物件中的屬性和方法

(為物件新增屬性和方法,為屬性和方法賦值)

4. 把建立後的物件返回

都是需要通過new的方式

JS筆記 原型物件

原型prototype 我們所建立的每乙個函式,解析器都會向函式中新增乙個屬性prototype,這個屬性對應著乙個物件,這個物件就是我們所謂的原型物件。如果函式作為普通函式呼叫prototype沒有任何作用,當函式以建構函式的形式呼叫時,它所建立的物件中都會有乙個隱含的屬性,指向該建構函式的原型物...

JS物件 原型 this學習總結

1.物件是函式建立的,而函式卻又是一種物件。屬性的集合 2.每個函式都有乙個屬性叫做prototype。這個prototype的屬性值是乙個物件,預設的只有乙個constructor的屬性,指向這個函式本身。3.每乙個物件多有乙個 proto 隱式原型。指向建立該物件的函式的prototype。但o...

JS 物件 JS原型 原型鏈

參考學習 js物件 構造器函式 建立物件的函式。物件分為普通物件和函式物件。所有物件都有 proto 屬性 函式物件不止有 proto 屬性,還有prototype屬性 稱為原型物件 1.new function 產生的物件都是函式物件。2.所有函式物件的 proto 都指向function.pro...