WEB开发网
开发学院网页设计JavaScript 浅谈JavaScript中的对象和类型(上) 阅读

浅谈JavaScript中的对象和类型(上)

 2010-02-03 00:00:00 来源:WEB开发网   
核心提示: 这个执行结果应该就不难猜了,值得注意的是,浅谈JavaScript中的对象和类型(上)(3),使用var关键字声明变量,与声明的位置毫无关系(只要是在函数的花括弧内)!这意味着你将脚本改成这个样子,test函数中的this应该是window对象,因为调用了window.alert方法,结果不会有

这个执行结果应该就不难猜了。

值得注意的是,使用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();

上一页  1 2 3 4  下一页

Tags:JavaScript 对象 类型

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接