锁定老帖子 主题:javascript面向对象技术基础(四)
精华帖 (4) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-09
引用 看过一篇文章介绍说javascript中对象的prototype属性相当于java中的static变量,可以被这个类下的所有对象 共用.而上面的例子似乎表明实际情况并不是这样: 结论错了吧,学过java的都知道,当子类拥有与父类相同的属性(或方法)时,父类的属性(或方法)就会被隐藏!看下面一段代码! function Person(name,sex) { //Person类的构造函数 this.name = name; this.sex = sex; } Person.prototype.age = 12; //为Person类的prototype属性对应的prototype对象的属性赋值, //相当于为Person类的父类添加属性 Person.prototype.print = function() { //为Person类的父类添加方法 alert(this.name+"_"+this.sex+"_"+this.age); }; var p1 = new Person("name1","male"); //p1的age属性继承子Person类的父类(即prototype对象) var p2 = new Person("name2","male"); p1.print(); //name1_male_12 p2.print(); //name2_male_12 p1.age = 34; //这时子类拥有与父类同名的属性了,父类的相应属性就被临时隐藏起来! p1.print(); //name1_male_34 p2.print(); //name2_male_12 delete p1.age //删除子类与父类同名的属性,从父类那里继承过来的属性就被暴露出来了! p1.print(); //name1_male_12!!!!!!! p2.print(); //name2_male_12 |
|
返回顶楼 | |
发表时间:2009-05-21
学习学习学习
|
|
返回顶楼 | |