// 建構函式
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...