作用域安全的建構函式

2022-06-02 18:45:07 字數 553 閱讀 3767

眾所周知,建構函式一般用new去呼叫,比如:

function person(name,age)

var xiaoming = new person('xiaoming',21);

因為使用new 呼叫建構函式,所有建構函式內部使用的this會指向新建立的物件的例項,但是,如果沒有用new去呼叫建構函式,情況會怎麼樣???可能一堆**裡面就有那麼幾段手誤的。

比如:

var xiaoming = person('xiaoming', 21);

此時情況怎麼樣,沒錯,因為this物件是執行時候繫結的,此時的this直接指向了window,那麼window就有了window.name 和window.age,這是很可怕的事情,會導致意想不到的錯誤。

為了安全起見,建立乙個作用域安全的建構函式式很有必要的。

function person(name,age)else 		

}

主要是加入了檢查並確保this是person例項的判斷,這個,即使不適用new去呼叫建構函式,也能返建構函式的例項。  

作用域安全的建構函式

一般建構函式定義和呼叫如下 function person name,age,job var person new person thinksley 24,web developer console.log person.name thinksley 而如果例項化物件的時候不用new的話,this會...

Javascript作用域問題的建構函式的變數

建構函式new對於使用。代表建立物件。此外,它可以被用作普通的函式呼叫,因為它也是乙個功能。function person name person 12 alert window.name 12 能夠看到當建構函式被當成普通函式呼叫的時候。this代表的是全域性的window物件。非常顯然把建構函式...

如何寫乙個作用域安全的建構函式

建構函式本質上就是乙個使用new操作符呼叫的函式,使用new呼叫時,建構函式內用到的this物件會指向新建立的物件例項 function girlfriend name,age,height 使用new操作符來分配這些屬性 var girlfriend new girlfriend ying 23,...