如果一个对象的属性值是一个函数,我们称这个属性叫做这个对象的方法(methods).
下面这个对象有一个属性叫做sayHello,它的值是一个匿名函数,所以我们把这个sayHello叫做obj的方法
var obj = {
name : "小明",
age : 12,
sex :"男",
sayHello : function(){
alert("你好")
}
};
obj.sayHello(); //你好
我们用对象打点调用sayHello属性,这个函数的值 是个函数,所以就能圆括号执行:
obj.sayHello();
现在我们要研究的是函数的上下文(context).。所谓上下文就是指函数里的this是谁
var obj = {
name : "小明",
age : 12,
sex :"男",
sayHello : function(){
alert("你好 我是"+this.name+"我的年龄是"+this.age)
}
};
obj.sayHello(); //你好 我是小明 我的年龄是12
当一个函数当做对象的方法调用的时候 ,这个函数里的this表示这个对象
现在我们调用 函数的时候 是通过 obj打点调用 的,所以现在这个sayHello函数的上下文就是obj对象 。即sayHello函数的内部this指向obj,
但是,千万不要认为写在对象里面的函数,上下文一定是这个对象!
比如:
var obj = {
xingming : "小明",
age : 12,
sex :"男",
sayHello : function(){
alert(this); //object window
alert("你好 我是"+this.name+"我的年龄是"+this.age)
}
};
var fn = obj.sayHello;
fn(); //你好 我是 我的年龄是undefined (上面用了name,用其它名字会出undefined)
函数的上下文是什么 ,取决于函数怎么调用 ,而不是函数如何定义!!
函数的上下文是函数的调用时表现的性质,不是函数定义的时候写死的性质.
var obj = {
xingming : "小明",
age : 12,
sex :"男",
sayHello : function(){
alert(this); //object window
alert("你好 我是"+this.name+"我的年龄是"+this.age)
}
}
var xingming = "小强";
var age ="123"
var fn = obj.sayHello;
fn(); //你好 我是小强 我的年龄是123
全局变量就是window对象的属性
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);
网友评论