+ -
当前位置:首页 → 问答吧 → 跪求各位高手,能看懂这个简短的Demo吗?

跪求各位高手,能看懂这个简短的Demo吗?

时间:2009-04-23

来源:互联网

<SCRIPT LANGUAGE="JavaScript">
       //静态属性:静态属性又称公共属性,它不属于某个类的实例,而是直接属于某个类。
       function user(name)
        {
          this.Name  =  name ; //实例属性
        }
        user.prototype.age = 0; //静态属性
  user.prototype.birthday = function(){//静态方法
        this.age++;
     //这里是this ,而不是 user.prototype.age++;
  }
  
  var XiaoWang = new user("小王");//小王
  var XiaoLiu = new user("小刘");//小刘
  alert(XiaoWang.age); // 0 ;
        alert(XiaoLiu.age);  // 0 ;
        XiaoWang.birthday();//小王过生日了。此时小王已经 拥有了一个 自己的 age 属性, 不需要再去原型中寻找。 ?????这个地方实在看不懂?能否解释下?

  XiaoWang.age++; //  跟 birthday() 方法 同理。?????这个地方实在看不懂?能否解释下?为什么XiaoWang.age++,就有了自己的age属性了

        user.prototype.birthday();
        alert(XiaoWang.age); // 2 ;
        alert(XiaoLiu.age);  // 1 ;
  /*
          首先我们解释 XiaoWang.age  为什么是2?而不是3?
    在前面的过程中,XiaoWang.birthday(); 在这一步后,
    其实小王已经拥有了属性age,也就是说已经为小王创建了一个跟静态属性同名的 实例属性。
          所以当 user.prototype.birthday()这之后,  XiaoWang.age并不会 +1 ,不管原型如何变化,都跟他无关了。
         
          而为什么XiaoLiu.age是 1 呢 ?
          因为小刘没有自己的实例属性age,所以他会到原型中寻找 名称为age的静态属性。
    静态属性通过user.prototype.birthday()进行了 +1 , 所以XiaoLiu.age是 1 .
  */
</SCRIPT>

作者: seekarmor   发布时间: 2009-04-23

因为  js 的变量特性,,不用先声明 就直接使用 。 用了之后 相应的变量或属性 就算是声明了 有了实例了

作者: boss_ch   发布时间: 2009-05-08

相关阅读 更多

热门下载

更多