建構函式與原型物件

2021-10-11 05:13:22 字數 1858 閱讀 9567

1.建構函式中的屬性和方法我們稱為成員,成員可以新增

2.例項成員===建構函式內部通過this新增的成員 uname,age,sing 就是例項成員(例項成員只能通過例項化的物件來訪問)

3.靜態成員 ==== 在建構函式本身上新增的成員 (靜態成員只能通過建構函式來訪問)

建構函式的問題

建構函式方法很好用,但是存在浪費記憶體的問題

建構函式原型prototype,建構函式通過原型分配的函式是所有物件所共享的。

1.原型是什麼?乙個物件,我們稱prototype為原型物件

2.原型作用?共享物件

3.一般我們的公共屬性定義到建構函式裡面,公共的方法我們放到原型物件身上

//建構函式中的屬性和方法我們稱為成員,成員可以新增

function sttar(uname, age)

sttar.prototype.sing = function()

var xm = new sttar('小明', 18);

var xh = new sttar('小紅', 16);

//例項成員===建構函式內部通過this新增的成員 uname,age,sing 就是例項成員

console.log(xm.uname);//例項成員只能通過例項化的物件來訪問

//靜態成員 ==== 在建構函式本身上新增的成員

sttar.*** = '男';

console.log(sttar.***); //靜態成員只能通過建構函式來訪問

console.dir(sttar);

xm.sing();

xh.sing();

console.log(xm);//每個物件身上都有乙個_proto_屬性指向建構函式的原型物件

console.log(xm.__proto__);

console.log(sttar.prototype === xm.__proto__);

利用原型鏈擴充套件內建物件

console.log(array.prototype);

array.prototype.sum = function()

return sum

}var arr = [1,2,3];

console.log(array.prototype);

console.log(arr.sum());

繼承es6之前通過建構函式+原型物件模擬實現繼承,稱為組合繼承

function fn()

var ss =

fn.call();

//子繼承父的屬性

function dad(uname, age)

dad.prototype.money = function()

function child(uname, age, score)

child.prototype = new dad();

child.prototype.constructor = child;

child.prototype.exam = function()

var child = new child('小明', 15, 80);

建構函式與原型物件

建構函式本身就是乙個函式,只不過該函式是出於建立新物件的目的而建立的。建構函式與其他函式的唯一區別,就在於呼叫他們的方式不同。任何函式,只要通過new操作符來呼叫,那他就可以作為建構函式 而任何函式,如果不通過new操作符來呼叫,那它跟普通函式也沒有什麼兩樣。當做構造函式呼叫 let person1...

建構函式,原型物件,

概念 如果函式中的邏輯生成乙個物件的並將其返回,我們就將其稱之為建構函式 回顧,普通函式,如下圖 一 建構函式嚴格意義就是用來生物件的 示例 用普通函式模擬的建構函式 二 建構函式是必須通過new這個關鍵字呼叫的 要改變this的指向 也稱為 例項化乙個物件 執行這個函式,生成乙個物件 它的作用就是...

建構函式 原型物件

物件都會有乙個屬性 proto 指向建構函式的prototype原型物件,之所以我們物件可以使用建構函式prototype原型物件的屬性和方法,就是因為物件有 proto 原型的存在 body p 建構函式 原型物件 p p 雖然構造物件上沒有sing方法,但是原型物件上有,因為 proto 的存在...