日期:2014-05-16  浏览次数:20383 次

整理 JS变量作用域

1  js静态属性和实例属性

   原型属性在实例化之后作为类的实例属性。但是实例属性在实例化之后却不能作为原型属性。

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>测试</title>
    </head>
    <body>
        <mce:script type="text/javascript"><!--
            function Man(name, age) {
                //定义实例属性
                this.name = name;
                this.age = age;
            }
            
            //定义静态属性。默认性别是男,不排除变性,^v^
            Man.sex = '男';
            //定义原型属性
            Man.prototype.phone = '123456';
            //除了name.sex和Man.prototype.phone其余全部是Undefined
            alert(Man.sex + "-----" + Man.prototype.phone + "--" + Man.name + "--" + Man.age + "--" + Man.phone);
            var man = new Man("Tom", 24);
            alert(Man.sex + "--" + man.name + "--" + man.age + "--" + man.phone);
            /**
             * 通过例子说明:原型属性在实例化之后作为类的实例属性。
             * 但是实例属性在实例化之后却不能作为原型属性。
             */
        
// --></mce:script>
    </body>
</html>


2

javascript变量的作用域

不太会写冠冕堂皇的开场白,直接进入主题。

我们看一道题,出处为javaeye的某贴——这世界就是这样,有些人喜欢制造问题,有人喜欢解决问题。制造问题的人为解决问题的人带来就业机会……

var a=100;
var b=true;
function test(){
alert(a);
alert(b);
b=false;
alert(b);
var a=200;
alert(a/2);
alert(++Math.PI);
alert(Math.PI++);
}
test();

为什么第一个alert为undefi