javascript之调用被覆盖的方法

本文探讨了在JavaScript中子类方法如何覆盖超类方法,以及如何通过调用超类的同名方法来实现功能增强而非完全替代。通过Rectangle与PositionedRectangle类的示例,展示了如何使用apply()方法调用被覆盖的超类方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jquery博客这两天在看原生的javascript,看到一些以前没关注到的,留点字迹放博客里,方便以后看看。
当子类定义一个和超类的方法具有相同名字的方法时候,子类的方法会覆盖超类的方法。
在创建已有类的子类时候,这是相对常见事哦。比如,任何时候,当为一个类定义toString()方法时,就会覆盖掉Object的toString()方法。
一个方法覆盖另一个方法的时候,前者经常是要增强被覆盖方法的功能,而不是完全替换其功能。要是做到这一点,方法必须能够调用它所覆盖掉的方法。从某个意义上说,这是一种方法链,就像构造函数链一样。可是调用一个被覆盖的方法比调用一个超类构造函数更难。
弄个例子。比如Rectange类已经定义一个toString()方法
Rectange.prototype.toString=function(){
return “["+this.width+","+this.height+"]“;
}
如果给Rectange一个toString()方法,就必须覆盖掉PositionedRectange中的toString()的方法,以便子类的实例中有一个字符表示能够反映其所有的属性,而不只是width和height属性。PositionedRectange是一个很简单的类,其toString()方法可以只是返回所有属性的值。但是,为方便举例子,让我们处理position属性并将width属性和height属性委托给其超类。
Rectange.prototype.toString=function(){
return “(“+this.x+”,”+this.y+”)”+
Rectange.prototype.toString.apply(this);
}
超类的toString()的实现是超类的原型对象的一个属性。注意,无法直接调用该方法。使用apply()来调用该方法,这样,就可以指定应该基于哪个对象来调用它。

转自 jquery http://www.jqueryba.com/316.html

转载于:https://www.cnblogs.com/divcss/archive/2012/10/10/2717801.html

<think>好的,我现在需要处理用户关于如何在致远A8中调用JavaScript方法的请求。首先,我需要确认用户的具体需求是什么。他们可能希望在自己的表单或页面上执行一些自定义的JavaScript代码,比如验证输入、动态显示内容或与后端交互。 致远A8作为一个企业管理系统,通常允许通过特定的接口或扩展点来添加自定义脚本。我应该回忆一下致远A8的开发文档,是否有相关的API或教程。比如,在表单设计中,可能有一个自定义脚本的区域,允许用户插入JavaScript代码。或者,可能需要通过事件触发器,比如按钮点击来调用方法。 接下来,我需要考虑如何提供示例代码。用户可能需要一个简单的例子,比如点击按钮时弹出提示框。这时候,我应该写出基本的JavaScript函数,并说明如何在致远A8的界面中绑定这个函数到某个事件上。比如,在按钮的属性设置里,添加onclick事件调用自定义的showMessage函数。 另外,用户可能对如何调试JavaScript代码有疑问,所以需要提醒他们使用浏览器的开发者工具查看控制台输出。同时,要注意致远A8的版本差异,不同版本可能有不同的方法,建议用户参考官方文档或社区资源。 还需要注意安全性,确保用户不会插入恶意脚本,影响系统稳定性。可能的话,提供一些最佳实践,比如避免使用全局变量,封装函数等。 最后,生成的相关问题应该覆盖常见的使用场景,比如参数传递、异步调用、DOM操作等,帮助用户进一步探索。确保回答结构清晰,分步骤说明,并验证示例代码的正确性,避免语法错误。</think>### 致远A8调用JavaScript方法示例 在致远A8系统中,通过自定义表单或页面脚本可实现JavaScript调用,主要用于动态交互、数据验证等场景。以下是两种典型实现方式: #### 方法1:表单控件事件绑定 1. 在表单设计器中添加按钮控件 2. 编辑控件事件属性,例如点击事件: ```javascript function showMessage() { A8.alert("操作成功"); // 调用致远内置弹窗组件[^2] // 或使用标准API var fieldValue = A8.getFieldValue("fieldCode"); // 获取字段值 A8.setFieldValue("targetField", fieldValue.toUpperCase()); } ``` #### 方法2:页面加载脚本 在表单的`onload`事件中注入脚本: ```javascript A8.onFormLoad(function(){ // 动态修改字段样式 A8.setStyle("dateField", { "backgroundColor": "#ffeeba", "border": "1px solid #ffc107" }); // 添加自定义校验逻辑 A8.addValidator("submitBtn", function(){ return A8.getFieldValue("amount") > 0; }, "金额必须大于零"); }); ``` §§ 1. 使用`A8.*`官方API代替原生DOM操作保证兼容性[^3] 2. 调试时通过浏览器开发者工具查看控制台输出(F12) 3. 复杂逻辑建议封装为独立.js文件通过资源管理器上传
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值