標籤:修改 靜態屬性 構造 hello color 執行個體化 prot 屬性 函數
//建構函式//使自己的對象多次複製,同時執行個體根據設定的訪問等級可以訪問其內部的屬性和方法//當對象被執行個體化後,建構函式會立即執行它所包含的任何代碼function myObject(msg) { //特權屬性(公有屬性) this.myMsg = msg; //只在被執行個體化後的執行個體中可調用 this.address = ‘Chengdu‘; //私人屬性:無法通過對象直接存取 var name = ‘Tirion‘; var that = this; //私人方法 function sayName() { alert(that.name); } //特權方法(公有方法) //能被外部公開訪問 //這個方法每次執行個體化都要重新構造而prototype是原型共用,所有執行個體化後,都共同引用同一個 this.sayAge = function() { alert(name); //在公有方法中可以訪問私人成員 } //私人和特權成員在函數的內部,在建構函式建立的每個執行個體中都會包含同樣的私人和特權成員的副本,因而執行個體越多佔用的記憶體越多}//公有方法//適用於通過new關鍵字執行個體化的該對象的每個執行個體//向prototype中新增成員將會把新方法添加到建構函式的底層中去myObject.prototype.sayHello = function() { alert(‘hello everyone!‘); }//靜態屬性:通過一個對象執行個體修改後,其它對象執行個體來訪問,也是修改後的值//適用於對象的特殊執行個體,就是作為Function對象執行個體的建構函式本身myObject.name = ‘china‘; //函數也是特殊的對象,所以可以給函數添加屬性和方法。而要通過對象來訪問,就要先得到這個建構函式,再訪問建構函式的屬性即可:m1.constructor.name//靜態方法myObject.alertname = function() { //訪問方式同靜態屬性 alert(this.name); //當通過對象執行個體的constructor訪問這個靜態方法的時候,執行內容也是constructor即myObject,所以會得到myObject的name即china }//執行個體化var m1 = new myObject(‘111‘);
以上是我對JS建構函式的理解~~~
談談JS建構函式