除了使用new操作符調用構造函數以外,我們也可以拋開new操作符,只用一般函數來創建對象,這樣就能執行某些預備工作,並已對象為返回值的函數。、 然後我們調用her()來生成對象: 實際上構造函數也是可以返回對象的,只不過this的值使用上將會有所不同。 在這裡,構造其函數不是返回包含屬性name的t ...
除了使用new操作符調用構造函數以外,我們也可以拋開new操作符,只用一般函數來創建對象,這樣就能執行某些預備工作,並已對象為返回值的函數。、
function her(){ return { name : 'Jon' }; }
然後我們調用her()來生成對象:
var a = her(); a.name; // Jon
console.log(a.constructor);
// function Object(){}
實際上構造函數也是可以返回對象的,只不過this的值使用上將會有所不同。
function Her(){ this.name = 'Jon'; return { sex : 'nv' } } var she = new Her(); she.name; // undefined; she.sex; // 'nv'
在這裡,構造其函數不是返回包含屬性name的this對象,而是返回包含屬性sex的獨立對象。但這也是在返回值是一個對象的前提下,如是一個非對象,照常會返回this.
關於對象是如何在構造函數內部被創建出來的,你可以這樣理解:
function Her(){ // var this = {}; this.name = 'Jon'; // return this; }