看到别人在讨论js的call,忍不住记下一笔,call的意思是改变被调用函数的当前指针,用法如下
var name="全局阿飞";
function myafei(){this.name="阿飞对象"}
function funX(){alert(this.name)}
funX();
funX.call(window);
funX.call(new myafei());
funX.call(document.getElementById("afeiinput"));
//注:默认的调用对象就是window,所以前两种调用方式结果一样,而后面两个,
//调用的对象分别改成 myafei和页面表单对象,所以打出的值是不同的。
<input type="text" id="afeiinput" name="afeiinput" value="阿飞表单" />
最后的结果是:全局阿飞,全局阿飞,阿飞对象,afeiinput。
在java中,我们经常通过实现接口(或者继承类)来重构代码,通过传入不同的对象,来调用不同的方法,我觉得这里应该也可以达到类似的作用,下面我们做个试验。
我们现在假如有这样一个场景,就是根据传入的动物的不同来调用不同的eat方法。
代码如下:
/*声明全局对象或者函数*/
function eat(){alert("我要吃")};
/*声明一个猪对象*/
function pigeat(){
this.eat=function(){
alert("我要吃猪草");
}
}
/*声明一个狗对象*/
function dogeat(){
this.eat= function(){
alert("我要吃骨头");
}
}
var pig=new pigeat();
//pig.eat();
var dog=new dogeat();
//dog.eat();
/*适配调用方法*/
function starteat(){
this.eat();
}
starteat();
starteat(window);
starteat.call(pig);
starteat.call(dog);
重点是最后starteat放入,根据传入不同的对象,就调用了不同方法里面的结果,结果是:我要吃,我要吃,我要吃猪草
,我要吃骨头。
假如需要扩展了,直接加一个动物,实现eat方法,然后传进去就ok了。当然在starteat里面还可以做更多的处理,以实现通用。
分享到:
相关推荐
可以使用条件语句或者库如jQuery来处理不同的浏览器特性,同时提供一个无JS的备选方案,保证没有JavaScript支持的用户也能正常浏览菜单。 总结,"js二级导航菜单"是通过JavaScript实现的一种动态交互菜单,它提高了...
js 二维数组 遍历 轻松实现实现 二维数组输出 包含高级for循环
在给定的标题“JS完美农历、二十四节气的、可查询的万年历万年历”中,我们可以理解这是一个利用JavaScript实现的功能完善的万年历程序,它特别强调了包含农历和二十四节气的功能。这个程序允许用户查询任何年份的...
javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单
js利用大津阈值算法将图像二值化,再将多于背景裁去,实现精确定位区域内有效内容区。 OTSU大津阈值算法,是存js写的算法,是将图片二值化的...图像处理用canvas,不太熟悉canvas的操作的同学,可以拿来做练习使用。
在这个场景中,"web前端js显示后台接口pdf二进制流文件"涉及到的技术点主要包括Web浏览器如何通过JavaScript处理从服务器获取的PDF二进制流数据,以及如何利用特定的库如PDF.js来在浏览器中直接展示PDF内容。...
JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在实现动态交互效果方面有着显著的作用。...通过实践这样的案例,开发者可以更好地理解如何用JavaScript实现动态交互功能,从而创建更加生动、互动的网页。
总结起来,"JS做的二级横向导航条"是一个利用JavaScript增强用户体验的交互式设计,它通过监听鼠标事件动态展现二级菜单,并使用DOM操作实现选中状态的高亮显示。通过结合HTML、CSS和JavaScript,可以创建出既美观又...
在网页开发中,二级联动是一种常见的交互设计,通常用于下拉菜单或选择列表,例如省份与城市的选择。...通过这个项目,开发者可以更好地理解如何使用JavaScript与HTML协同工作,实现动态交互的网页效果。
3. **数据解析**:当需要使用这些数据时,JBB可以反序列化二进制数据回原始的JavaScript对象或其他格式,供应用程序进一步处理。 在实际应用中,JBB可以用于各种场景,比如游戏开发中的资源存储、大数据分析时的...
总之,制作一个JavaScript二级菜单需要理解DOM操作、事件监听和CSS样式的应用。通过学习和实践,你可以创建出符合项目需求的个性化菜单,提升用户体验。在提供的"JS二级菜单"文件中,你可以找到具体的代码示例,...
当鼠标悬停在一级菜单上时,JS可以控制二级菜单的显示和隐藏。例如,通过监听`mouseover`和`mouseout`事件,我们可以实现二级菜单的展开和收起。 下面是一个简单的二级下拉菜单的JS和CSS实现步骤: 1. **HTML 结构...
总的来说,"js左侧边导航菜鼠标悬停展开二级菜单导航"是一个常见的前端开发任务,涉及到HTML、CSS和JavaScript的结合使用,通过这些技术可以为用户提供更友好的交互体验。实际开发中,还需要根据项目需求进行定制和...
本知识点将深入探讨如何使用原生JavaScript实现文件上传,获取文件的二进制数据、大小以及文件名称。 首先,我们需要一个HTML元素,通常是`<input type="file">`,用于让用户选择要上传的文件。例如: ```html ``...
7. **数据绑定**:在现代JavaScript框架(如Vue.js或React.js)中,数据绑定可以自动完成部分工作,使得状态管理更为简洁。但这个文件没有提到使用任何框架,所以可能使用的是原生JavaScript。 8. **兼容性考虑**:...
针对“海康威视 js 二次开发 web”的主题,我们可以深入探讨如何利用JavaScript进行Web端的二次开发,以便通过网络对海康威视的监控设备进行操作和管理。 首先,我们需要了解的是海康威视提供的SDK(Software ...
当用户在一级列表中选择某个省份时,JavaScript/jQuery将读取该选择,然后遍历`cities.js`中的数据,找到匹配的子城市,更新二级列表。这涉及到DOM元素的查找(`$("#province").val()`)、遍历(`for...in`循环)和...
通过js-xlsx的二次封装,我们可以更便捷地在前端实现Excel导出功能,同时还能灵活调整样式。这个过程不仅降低了开发难度,还提高了代码的可维护性。然而,对于大量数据的处理,依然推荐后端进行优化,以避免浏览器...
- **事件监听**:使用JavaScript,我们可以监听用户的鼠标悬停(hover)事件,当用户将鼠标移到特定的一级菜单项上时,触发显示二级菜单的逻辑。 - **DOM操作**:通过`document.querySelector()`或`document....
"js实现横向弹出二级菜单"是一种常见的交互设计技术,尤其适用于英文网站,因为英文单词通常较长,横向展示能更有效地利用空间,提供清晰的视觉层次。这个技术的核心是利用JavaScript语言来动态控制菜单的显示与隐藏...