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 的存在...