如果一個(gè)對(duì)象的屬性值是一個(gè)函數(shù),我們稱這個(gè)屬性叫做這個(gè)對(duì)象的方法(methods).
下面這個(gè)對(duì)象有一個(gè)屬性叫做sayHello,它的值是一個(gè)匿名函數(shù),所以我們把這個(gè)sayHello叫做obj的方法
var obj = {
name : "小明",
age : 12,
sex :"男",
sayHello : function(){
alert("你好")
}
};
obj.sayHello(); //你好
我們用對(duì)象打點(diǎn)調(diào)用sayHello屬性,這個(gè)函數(shù)的值 是個(gè)函數(shù),所以就能圓括號(hào)執(zhí)行:
obj.sayHello();
現(xiàn)在我們要研究的是函數(shù)的上下文(context).。所謂上下文就是指函數(shù)里的this是誰
var obj = {
name : "小明",
age : 12,
sex :"男",
sayHello : function(){
alert("你好 我是"+this.name+"我的年齡是"+this.age)
}
};
obj.sayHello(); //你好 我是小明 我的年齡是12
當(dāng)一個(gè)函數(shù)當(dāng)做對(duì)象的方法調(diào)用的時(shí)候 ,這個(gè)函數(shù)里的this表示這個(gè)對(duì)象
現(xiàn)在我們調(diào)用 函數(shù)的時(shí)候 是通過 obj打點(diǎn)調(diào)用 的,所以現(xiàn)在這個(gè)sayHello函數(shù)的上下文就是obj對(duì)象 。即sayHello函數(shù)的內(nèi)部this指向obj,
但是,千萬不要認(rèn)為寫在對(duì)象里面的函數(shù),上下文一定是這個(gè)對(duì)象!
比如:
var obj = {
xingming : "小明",
age : 12,
sex :"男",
sayHello : function(){
alert(this); //object window
alert("你好 我是"+this.name+"我的年齡是"+this.age)
}
};
var fn = obj.sayHello;
fn(); //你好 我是 我的年齡是undefined (上面用了name,用其它名字會(huì)出undefined)
函數(shù)的上下文是什么 ,取決于函數(shù)怎么調(diào)用 ,而不是函數(shù)如何定義??!
函數(shù)的上下文是函數(shù)的調(diào)用時(shí)表現(xiàn)的性質(zhì),不是函數(shù)定義的時(shí)候?qū)懰赖男再|(zhì).
var obj = {
xingming : "小明",
age : 12,
sex :"男",
sayHello : function(){
alert(this); //object window
alert("你好 我是"+this.name+"我的年齡是"+this.age)
}
}
var xingming = "小強(qiáng)";
var age ="123"
var fn = obj.sayHello;
fn(); //你好 我是小強(qiáng) 我的年齡是123
全局變量就是window對(duì)象的屬性
var a =100;
var b =222;
var c = 233;
var d = true;
var e =function(){alert(2+3)};
alert(window.a);
alert(window.b);
alert(window.e);