关于javascript中的静态属性和静态方法
在网上看到了一个javascript教程的例子,有些不好理解
经过一番思考我认为这个问题的关键如下。
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,估计就是我写的那个意思