1 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
當(dāng)一個(gè)函數(shù)作為構(gòu)造函數(shù)使用時(shí),如果函數(shù)沒(méi)有明確的返回值,那么在調(diào)用的時(shí)候會(huì)生成一個(gè)this,并把這個(gè)this返回,這個(gè)返回值也就是我們所說(shuō)的實(shí)例。但是當(dāng)你在構(gòu)造函數(shù)中明確返回一個(gè)對(duì)象的時(shí)候,這個(gè)對(duì)象就會(huì)被返回,而不是那個(gè)this,所以在你的例子中你明確返回了一個(gè)對(duì)象,所以當(dāng)你調(diào)用new a(name)的時(shí)候,返回值就是
{
say1: say
}
這個(gè)對(duì)象就是一個(gè)普通的對(duì)象,不是a的實(shí)例,所以沒(méi)有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);
}
//暴露出來(lái)
window.a = a;
})(document , window)
添加回答
舉報(bào)