论坛首页 Web前端技术论坛

javascript面向对象技术基础(四)

浏览 18183 次
精华帖 (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 
0 请登录后投票
   发表时间:2009-05-21  
学习学习学习
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics