posts - 82, comments - 269, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Prototype </TITLE>


<SCRIPT LANGUAGE="JavaScript">
//此函数来至于prototype,由于此代码只是简单的演示,所以就直接把其提取出来了.
Object.extend = function(destination, source) {
  for (var property in source) {
    destination[property] = source[property];
  }
  return destination;
}

function Student(major){
 this.major=major;
}


Object.extend(Student.prototype, {
  sayHello: function(){
   alert("Hello world!");
  }
 }
)

/**======================================
我比较奇怪的是上面的函数调用下面这段替换怎么就不行
function People(){ 
 sayHello= function(){
  alert("Hello world!");
 }
}
var people= new People();
var stu=new Student("manage");
Object.extend(stu,people);

=========================================**/

 


var stu=new Student("manage");


/**=================================
通过这种方式虽然student继承了pepole的属性,但通过instanceof,最后的属性并不是people
==================================**/
stu.sayHello();


for (var property in stu) {   
 alert(property);
}


</SCRIPT>

 


</HEAD>

<BODY>
本代码最初发表于 http://blog.openj.cn

</BODY>
</HTML>


评论

# re: JavaScript的OOP初体验(通过对象复制来实现)  回复  更多评论   

2007-04-06 16:37 by liuganquan
function People(){
sayHello= function(){
alert("Hello world!");
}
}
添加方法定义出错了吧
function People(){

}
People.prototype.sayHello= function(){
alert("Hello world!");
};

Object.extend(Student.prototype,People.prototype);
就可以了

# re: JavaScript的OOP初体验(通过对象复制来实现)  回复  更多评论   

2007-04-06 21:14 by itspy
楼上说的确实可以,但不知道为什么一定要

Object.extend(Student.prototype,People.prototype);

下面两种为什么不行?
Object.extend(Student.prototype,People);
Object.extend(Student,People);

# re: JavaScript的OOP初体验(通过对象复制来实现)  回复  更多评论   

2007-04-06 21:17 by TiGERTiAN
js里面类扩充方法最基本都是用prototype 啊。。。怎么会争大呢?

# re: JavaScript的OOP初体验(通过对象复制来实现)  回复  更多评论   

2007-04-17 09:00 by 周小锄
其实是可以的,改一下People的构造函数:
People = function(){
this.sayHello=function(){
alert('hello world');
} ;
};

var people=new People();
var stud=new Student('manage');
Object.extend(stud,people);
stud.sayHello();//alert:hello world

# re: JavaScript的OOP初体验(通过对象复制来实现)  回复  更多评论   

2007-09-04 11:44 by stevenhong
function People(){
sayHello= function(){
alert("Hello world!");
}
}
问题是这个就不是一个对象。

只有注册用户登录后才能发表评论。


网站导航: