1 回答

TA貢獻1786條經(jīng)驗 獲得超13個贊
當(dāng)一個函數(shù)作為構(gòu)造函數(shù)使用時,如果函數(shù)沒有明確的返回值,那么在調(diào)用的時候會生成一個this,并把這個this返回,這個返回值也就是我們所說的實例。但是當(dāng)你在構(gòu)造函數(shù)中明確返回一個對象的時候,這個對象就會被返回,而不是那個this,所以在你的例子中你明確返回了一個對象,所以當(dāng)你調(diào)用new a(name)的時候,返回值就是
{
say1: say
}
這個對象就是一個普通的對象,不是a的實例,所以沒有a原型上面的方法,
a instanceof aa // false
你可以直接把say1放在this上,代碼如下:
(function(document, window){
var a = function(name){
...
var say = function(){
alert(1);
}
this.say1 = say
}
a.prototype.say2 = function(){
alert(1);
}
//暴露出來
window.a = a;
})(document , window)
添加回答
舉報