关于javascript中的静态属性和静态方法

在网上看到了一个javascript教程的例子,有些不好理解

 

Code

 

经过一番思考我认为这个问题的关键如下。
user.prototype.birthday = function(){//静态方法
        this.age++; }
//这是整个问题的核心,先回归javascript最基本的概念,就是如何定义一个对象的属性,直接obj.属性名=属性值。就为obj新增了一个属性。this.age++可以理解为this.age=this.age+1;当执行this.age+1时,会从它的原型属性中找到this.age=1,而当这个值赋给this.age的时候,就向前面所说的如何定义一个对象的属性。这时this有了自己的属性age,而不再从原型中查找。不知我理解的对不对,请各们大侠拍砖。。。

其它理解:

 

改成Js代码
user.prototype.birthday = function(){  
                if(!this.age){  
                    this.age = 0;  
                }  
                this.age += 1;  
            }  

user.prototype.birthday = function(){
    if(!this.age){
     this.age = 0;
    }
    this.age += 1;
   }

然后
Js代码
alert(XiaoWang.hasOwnProperty("age"));  
            XiaoWang.birthday();  
            alert(XiaoWang.hasOwnProperty("age")); 

alert(XiaoWang.hasOwnProperty("age"));
   XiaoWang.birthday();
   alert(XiaoWang.hasOwnProperty("age"));

再看不明白的话,就先去看看基础的吧,可能是this.age++;这个有点魔幻,去查查ecma-262,估计就是我写的那个意思

 

posted @ 2009-11-14 23:00  ForFreeDom  阅读(484)  评论(0编辑  收藏  举报