mysql 建構函式 建構函式 prototype

2021-10-20 22:29:04 字數 1198 閱讀 3498

functionstart(uname, age) var zjl = new start('zjl', '41');var reol = new start('reol', '22');

以上的建構函式中,new了zjl和reol兩個物件,存在乙個sayhai的方法,二者的內容一樣,但由於方法為複雜資料型別,會分別開闢乙個新的記憶體空間,白白浪費了記憶體,可以使用建構函式內建的屬性prototype,將一些不變的方法定義在其原型物件上,達到節省記憶體的目的

functionstart(uname, age) //核心

start.prototype.sayhai = function() var zjl = new start('zjl', '41');var reol = new start('reol', '22');

zjl.sayhai();

最後的輸出正常,但記憶體被節省了

其構造出來的物件之所以能呼叫prototype,是因為zjl中系統自動新增了指向prototype的原型物件的屬性,__proto__

__proto__與prototype是等價的,console.log(zjl.__proto__===star.prototype);輸出為true

系統會在prototype和__proto__中自動新增constructor的屬性,其指向原來的建構函式即star

輸出console.log(zjl.__proto__.constructor);

輸出結果為:

但是,如果這樣賦值,則會自動覆蓋掉系統生成的constructor

start.prototype ={

sayhi:function() {

console.log('hi');

則輸出 console.log(zjl.__proto__.constructor);會提示錯誤

原型鏈:

mysql 建構函式 建構函式

建構函式主要是用來建立物件時為物件賦初值來初始化物件。總與new運算子一起使用在建立物件的語句中 a a new a 建構函式具有和類一樣的名稱 但它是乙個函式具有函式的所有特性,同乙個類裡面可以有多個引數不同的建構函式,也就是函式的多型。建構函式是在例項化類時最先執行的方法,通過這個特性可以給物件...

建構函式 拷貝建構函式 賦值建構函式

class和struct很大乙個區別在於,c除了成員的訪問控制許可權,struct中的成員預設是public,而class中的field預設是private class還有乙個special的地方是它有建構函式 constructor。建構函式是class中的一員,和成員變數 其他成員函式一起構成乙...

構造函式呼叫建構函式

題目如下 問下列 的列印結果為0嗎?include stdlib.h include iostream using namespace std struct clscls int main 列印結果是不定的,不一定為0 奇怪的地方在於建構函式中呼叫了自己的另乙個建構函式 我們知道,當定義乙個物件時,...