建構函式的this是當前類的例項
2.【建構函式執行獨有】在js**自上而下執行之前,首先在當前形成的私有棧中建立乙個物件(建立乙個堆記憶體:暫時不儲存任何的東西),並且讓函式中的執行主體(this)指向這個新的堆記憶體(當前類的例項) => this === 建立的物件
3.**自上而下執行
4.【建構函式執行獨有】**執行完成,把之前建立的對記憶體位址返回(瀏覽器預設返回)
5.釋放棧記憶體
function
fn() ;
};fn.prototype.a = function () ;
let f = new fn();
console.log(f); // fn
console.log(f.n); // undefined
複製**
此例中:
// instanceof:檢測當前例項是否所屬這個類
console.log(f instanceof fn); //true
console.log(f instanceof
object); //true
console.log(f instanceof
function); //flase f是例項,例項是個物件 屬於object類,不屬於function
console.log(fn instanceof
function); //true 所有的函式都屬於function內建類的例項
console.log(fn instanceof
object); //true 函式也是物件,所以屬於內建基類object
// in: 判斷物件中是否存在某個元素(無論私有屬性還是在原型上的公有屬性,只要存在就為true
console.log('n'
in f); // flase 'n'不屬於f例項的屬性,是fn函式的屬性
console.log('m'
in f); // true
console.log('name'
in f); // true
console.log('a'
in f); //true
// hasownproperty: 檢測當前屬性為物件的私有屬性
console.log(f.hasownproperty('n')); //false n不是私有屬性,也不是公有屬性,n不是f例項的屬性
console.log(f.hasownproperty('m')); //true
console.log(f.hasownproperty('a')); //flase a是fn類原型上的屬性,屬於公有屬性
複製**
function
haspubproperty(attr,obj);
console.log(haspubproperty('tostring',f)); //true
複製**
function
fn(name,age) ;
fn();
var f1 = new fn('***',20);
var f2 = new fn('aaa',30);
console.log(f1 === f2); //false 兩個不同的例項(堆記憶體位址)
console.log(f1.age); //30
console.log(f2.name); // 'aaa'
console.log('name'
in f1); // true
// name 和age在兩個不同的例項都有儲存,但是都是每個例項自己私有的屬性
console.log(f1.n); // undefined 只有this.*** = ***的才和例項有關係,n是私有作用域中的乙個私有變數而已
複製**
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是原型共享,所有例項化後,都共...