1. 程式人生 > >JS學習筆記-構造函數篇

JS學習筆記-構造函數篇

返回值 def 說明 ins 是否 fun eight array per

創建實例funtion Fn (){ var num = 10; this.x = 100; this.getX = function(){ console.log(this.num); }
}var f1 = new Fn;f1.getX();最後執行的結果是:undefined說明: 類有普通的裏面,當函數執行的時候,var num只是當的形成的私有作用域中的私有變量而已,它和我們的f1這個實例沒有任何的關系,只有this.xxx=xx才相當於給f1增加私有的屬性和方法,才和我們的f1有關系;
funtion Fn (){ var num = 10; this.x = 100; this.getX = function(){ console.log(this.num); }
return false;
return {"name","123"};
}var f1 = new Fn;console.log(f1);說明:在構造函數歐式中,瀏覽器會默認的把我們的實例返回(返回的是一個數據類型的值);如果我們手動寫了return返回: 返回的是一個基本數據類型就那個的值,房錢實例是不變的,例如:return 100;我們的f1還是當前Fn的實例 返回的是一個引用數據類型的值,當前的實例會被自己的返回值給替換掉,例如返回:return {"name","123"};我們的f1就不再是Fn的實例了,而是對象{“name”,"123"};
funtion Fn (){ var x= 10; this.getX = function(){ console.log(this.x); }}var f1 = new Fn;說明:檢測某個實例是否屬於這個類---》instanceofconsole.log(f1.instanceof Fn);//-->true這方法可以檢測數據類型:f1 instanceof Array -> false;f1 instanceof Object -> true

這個檢測數據類型的方法可以和typeof比較funtion Fn (){ var x= 10; this.getX = function(){ console.log(this.x); }}var f1 = new Fn;var f2 = new Fn;說明 : f1和f2都是Fn這個類的一個實例,都擁有x和getX兩個屬性,但是這個屬性是各自的私有屬性,所以console.log(f1.getX ==== f2.getX);//--> false
in 檢測某一個屬性是否屬於這個對象(attr in object),不管是私有的屬性還是公用的屬性,只要存在,用in檢測都是true

//hasOwnProperty:用來檢測某一個屬性是否是這個對象的“私有屬性”,這個方法只能檢測私有屬性console.log(f1.hasOwnProperty("getX"));-->true "getX"是f1的私有屬性
//檢測某一個屬性是否是這個對象的“公有屬性”
function hasPubProperty(obj,attr){ return (attr in obj) && !obj.hasOwnProperty(attr);
//屬性是對象的屬性,但又不是私有的屬性,必定是公有屬性;}


null

JS學習筆記-構造函數篇