浅谈JavaScript中的对象和类型(上)
2010-02-03 00:00:00 来源:WEB开发网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");
Tags:JavaScript 对象 类型
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接