浅谈JavaScript中的对象和类型(上)
2010-02-03 00:00:00 来源:WEB开发网这个执行结果应该就不难猜了。
值得注意的是,使用var关键字声明变量,与声明的位置毫无关系(只要是在函数的花括弧内)!这意味着你将脚本改成这个样子,结果不会有任何变化:
function test()
{
a = function(arg) { window.alert("alert: " + arg); };
a("hello world");
if (false)
{
var a = 0;
}
}
JavaScript只关心,你是否在这个作用域中,使用var修饰了这个变量名。
最后需要说明的问题是,函数的作用域对象并不等同于函数对象!换言之var a = 100并不能使得函数对象多出一个成员a其值为100。函数的作用域对象是函数被调用时存在的对象,这与函数对象(用于调用函数的对象)不是一回事。函数的作用域对象是一个运行时自动创建自动回收的对象,你甚至无法捕获到这个对象。
三、this对象
this对象恐怕是JavaScript里面最难于理解的对象了,有人还总结出了N种情况下this分别代表什么含义。但事实上如果我们了解JavaScript的实际执行原理,就不难搞清楚this到底是什么。this一般等同于调用函数的上下文中,函数的宿主对象。
先看一个最常见的情况:
function test()
{
this.alert("abc");
}
test();
从执行结果来看,test函数中的this应该是window对象,因为调用了window.alert方法。
那为什么在这段脚本中this是window呢?原因就是在调用上下文中test其实是window的一个成员。因为上面的脚本从某种意义上来说等同于:
window.test = function()
{
this.alert("abc");
}
window.test();
Tags:JavaScript 对象 类型
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接