JS的建構函式

2021-07-25 12:54:09 字數 1888 閱讀 6919

/*

建構函式

使自己的物件多次複製,同時例項根據設定的訪問等級可以訪問其內部的屬性和方法

當物件被例項化後,建構函式會立即執行它所包含的任何**

*/function

myobject

(msg)

//特權方法(公有方法),能被外部公開訪問,這個方法每次例項化都要重新構造而 prototype 是原型共享,所有例項化後,都共同引用同乙個

this.sayage = function

() /*

私有和特權成員在函式的內部,在建構函式建立的每個例項中都會包含同樣的私有和特權成員的副本,

因而例項越多占用的記憶體越多

*/}/*

公有方法

適用於通過new關鍵字例項化的該物件的每個例項

向prototype中新增成員將會把新方法新增到建構函式的底層中去

*/myobject.prototype.sayhello = function

()/*

靜態屬性

適用於物件的特殊例項,就是作為function物件例項的建構函式本身

*/myobject.name = 'china';

/* 靜態方法

*/myobject.alertname = function

();//例項化

var m1 = new myobject('111');

//---- 測試屬性 ----//

console.log(m1.name); //undefined, 靜態屬性不適用於一般例項

console.log(m1.constructor.name); //china, 想訪問類的靜態屬性,先訪問該例項的建構函式,然後在訪問該類靜態屬性,在此,constructor 的意義很明顯了

console.log(m1.address); //上海 此時 this 指的是例項化後的m1

console.log(myobject.name); //china

console.log(myobject.address); //undefined, myobject中的 this 指的不是函式本身,而是呼叫 address 的物件,而且只能是物件

console.log(myobject.constructor === function); //true 體會下含義

//---- 測試方法 ----//

myobject.alertname(); //china,直接呼叫函式的類方法

m1.alertname(); //ff: m1.alertname is not a function, alertname 是myobject類的方法,和例項物件沒有直接關係

m1.constructor.alertname(); //china, 呼叫該物件建構函式(類函式)的方法(函式)

m1.sayhello(); //hello everyone, myobject類的prototype原型下的方法將會被例項繼承

myobject.sayhello(); is not a function,sayhello是原型方法,不是類的方法

//---- 測試 prototype ----//

console.log(m1.prototype); //undefined, 例項物件沒有prototype

console.log(myobject.prototype); //object

alert(myobject.prototype.constructor); console.log返回myobject(msg),此時alert()更清楚,相當於myobject

console.log(myobject.prototype.constructor.name); //china, 相當於myobject.name;

原文在這裡

js建構函式

1 經典例項,涵蓋全域性變數,區域性變數,變數宣告提公升,物件,上下文,閉包等知識 var num 4 var obj this.num 2 num 3 alert num var fn obj.fn window.num 8 num nan num 4 fn function alert num ...

JS建構函式

建立乙個物件可以字面量建立或建構函式建立 字面量建立物件例如 字面量建立物件 var p1 但如果需要建立多個同一型別 屬性和方法都相同 的物件,使用字面量不合適,可以使用建構函式建立 宣告建構函式的語法和普通函式相同,但是建構函式的函式名首字母大寫 function student name,st...

js建構函式

建構函式 使自己的物件多次複製,同時例項根據設定的訪問等級可以訪問其內部的屬性和方法 當物件被例項化後,建構函式會立即執行它所包含的任何 function myobject msg 特權方法 公有方法 能被外部公開訪問 這個方法每次例項化都要重新構造而prototype是原型共享,所有例項化後,都共...