GavinZeng
2016-10-11 09:56:56
var?fn1?=?function?()?{
????var?a?=?10;
????var?b?=?function?()?{?alert(123);?};
????var?c?=?{
????????name:?"lazy",
????????year:?1981
????}
}var?fn2?=?function?()?{
????this.a?=?10;
????this.b?=?function?()?{?alert(123);?};
????this.c?=?{
????????name:?"lazy",
????????year:?1981
????}
}var?fn3?=?{
????a:?10,
????b:?function?(x)?{?alert(this.a?+?x);?},
????c:?{
????????name:?"lazy",
????????year:?1981
????}
}問(wèn)題:以上三種定義函數(shù)/對(duì)象的方式,有什么區(qū)別
3 回答
已采納

stone310
TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
第一種是函數(shù)內(nèi)部變量,a,b,c屬于私有變量,外界無(wú)法直接訪問(wèn),可通過(guò)return返回或者閉包方法訪問(wèn);
第二種a,b,c是定義函數(shù)(構(gòu)造函數(shù))的屬性,當(dāng)外部創(chuàng)建它的實(shí)例(new fn2())后,可訪問(wèn);
var?fn=new?fn2(); console.log(fn.a)????//10
第三種是json對(duì)象,內(nèi)部a,b,c是鍵,對(duì)應(yīng)的是值,外部可直接通過(guò)fn3.a訪問(wèn)
console.log(fn3.a)???//10

堂堂堂堂糖糖糖童鞋
TA貢獻(xiàn)101條經(jīng)驗(yàn) 獲得超58個(gè)贊
你可以看一下:自定義對(duì)象,函數(shù)定義與調(diào)用
其實(shí),你這幾種情況都不是閉包,
閉包條件:1、函數(shù)嵌套,2、內(nèi)部函數(shù)引用外部函數(shù)變量
舉個(gè)栗子:
var?fn1?=?function?()?{ ????var?a?=?3; ????retrun?function?()?{ ????????return?a; ????} } console.log(fn1()())//輸出a的值
閉包的作用:我們可以在全局范圍內(nèi)訪問(wèn)到函數(shù)內(nèi)部的變量,并且私有化變量,因?yàn)槲覀儾荒軐?duì)函數(shù)內(nèi)部的變量進(jìn)行更改。
添加回答
舉報(bào)
0/150
提交
取消