请教JS中的方法重写。。。

littlecc2009 2010-04-25 01:56:19
一篇文章说这个例子是实现了js中方法和属性的重写:
function AClass()
{
this.Property = 1;
this.Method = function()
{
alert(1);
}
}

function AClass2()
{
this.Property2 = 2;
this.Method2 = function()
{
alert(2);
}
}
AClass2.prototype = new AClass();
AClass2.prototype.Property = 3;
AClass2.prototype.Method = function()
{
alert(4);
}
var obj = new AClass2();
alert(obj.Property);
obj.Method();

但是如果把红字部分改成var obj = new AClass();的话,alert(obj.Property);和obj.Method();还是输出的是父类中的内容哦。方法重写不是访问子类实例的方法或者父类实例的方法都是调用子类的方法吗??为什么这里说是重写呢??应该是重载吧??

如果这里不是重写。。那请问JS怎么实现方法重写呢??
请指教~~!!~~~~
...全文
1256 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
longwensun 2012-07-09
  • 打赏
  • 举报
回复
重载是同名函数多参数,重写是同函数,同参数,函数体不同
  • 打赏
  • 举报
回复
[Quote=引用楼主 littlecc2009 的回复:]
AClass2.prototype = new AClass();
AClass2.prototype.Property = 3;
AClass2.prototype.Method = function()
{
alert(4);
}[/Quote]
在javascript中,你(或者任何人)可以直接胡乱重写别人已经定义的方法属性,而不用顾及任何规矩。
wuyq11 2010-04-25
  • 打赏
  • 举报
回复
用prototype方法可以定义,或者修改一个类的属性和方法
var Class;
Class.prototype.Member= "Value ";
Class.prototype.Method=function (){};
可以用
Class.Method();alert(Class.Member);
面向对象的编程
  • 打赏
  • 举报
回复
可是我们可以重写asp.net的方法啊!例如 --> 可是我们可以重写javascript的方法属性啊!例如
  • 打赏
  • 举报
回复
什么子类、父类、重载?

这是javascript,不是c#,可以打比喻倒是不要不做预先说明就生搬硬套。
  • 打赏
  • 举报
回复
[Quote=引用楼主 littlecc2009 的回复:]
一篇文章说这个例子是实现了js中方法和属性的重写:
function AClass()
{
this.Property = 1;
this.Method = function()
{
alert(1);
}
}

function AClass2()
{
this.Property2 = 2;
this.Method2 = function(……
[/Quote]

你搞混了javascript和c#的概念了吧?!

javascript不是面向对象语言,它只是基于对象的。它没有所谓重载概念。例如我们都可以在含有交互操作的asp.net页面输出到客户端的html中看到这样的语句
<script type="text/javascript"> 
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
可是我们可以重写asp.net的方法啊!例如
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "重写回发机制",
"__oldDoPostback=__doPostBack; " +
"__doPostBack=function(eventTarget, eventArgument) {" +
" alert('秘密警察已经记录了你给asp.net应用程序的回发数据.');" +
" __oldDoPostback(eventTarget,eventArgument);" +
"}", true);
}


如果了解一点html/javascript,不妨看看html到底是什么。相信你会加深关于javascript语言的印象。
unicode 2010-04-25
  • 打赏
  • 举报
回复
重写就是子类的覆盖父类的。改动后,ojb是父类对象,调用的当然就是父类方法

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧