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

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

 2010-02-03 00:00:00 来源:WEB开发网   
核心提示: functionconstructor(){varperson=newObject();person.name="Ivony";person.sexual="男";//...returnperson;}varmanager=constructor();wi

function constructor()
{
  var person = new Object();
  person.name = "Ivony";
  person.sexual = "男";
  //...
  return person;
}
var manager = constructor();
window.alert(manager.name);
window.alert(manager.sexual);

二、全局scope(作用域)。

我们刚刚在定义a这个变量的时候,使用了一个JavaScript的关键字:var。在解释这个关键字之前,我们先考虑下面的代码:

function test()
{
  a = 100;
  window.alert(window.a);
}
test();

猜猜结果是什么?

这是许多传统程序员无法理解的地方,明明是对变量a赋值,怎么window.a也赋值了。这就是JavaScript有意思的全局scope现象。

简单的说JavaScript中没有传统程序设计语言中分配于堆栈上的变量的概念,取而代之的是scope对象(很多时候这不是一个真正的对象)。你直接用a = 100这样的代码赋值的时候,你并不是给一个叫做a的变量赋值,而是给scope对象的一个名为a的成员赋值。

如果不使用var关键字,默认的scope对象就是全局scope也就是window,所以a = 100就等同于window.a = 100。

当然,你也可以想到,alert等同于window.alert,那么window.alert也应等同于 window.window.alert。事实的确如此,window对象真的有个成员叫做window,而且就是它自身,所以你window后面点多少个window都是一样的。

那么,var关键字的用途就是,将变量附着于函数的作用域(或者说当前的作用域)对象上,而非全局作用域对象。考虑下面的代码:

function a(arg)
{
  window.alert(arg);
}
function test()
{
  var a = function(arg) { window.alert("alert: " + arg); };
  a("hello world");
}
test();
a("hello world");

上一页  1 2 3 4  下一页

Tags:JavaScript 对象 类型

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