JS筆記 6 建構函式

2021-09-24 08:15:20 字數 1947 閱讀 6477

建構函式的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是原型共享,所有例項化後,都共...