`
AngelAndAngel
  • 浏览: 234772 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

js可以这么用(二)

 
阅读更多

  看到别人在讨论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里面还可以做更多的处理,以实现通用。

 

 

 

3
1
分享到:
评论

相关推荐

    js二级导航菜单

    可以使用条件语句或者库如jQuery来处理不同的浏览器特性,同时提供一个无JS的备选方案,保证没有JavaScript支持的用户也能正常浏览菜单。 总结,"js二级导航菜单"是通过JavaScript实现的一种动态交互菜单,它提高了...

    js 二维数组 遍历

    js 二维数组 遍历 轻松实现实现 二维数组输出 包含高级for循环

    JS完美农历、二十四节气的、可查询的万年历万年历

    在给定的标题“JS完美农历、二十四节气的、可查询的万年历万年历”中,我们可以理解这是一个利用JavaScript实现的功能完善的万年历程序,它特别强调了包含农历和二十四节气的功能。这个程序允许用户查询任何年份的...

    javascript二级联动表单

    javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单javascript二级联动表单

    JS利用OTSU二值化并缩小选定区域

    js利用大津阈值算法将图像二值化,再将多于背景裁去,实现精确定位区域内有效内容区。 OTSU大津阈值算法,是存js写的算法,是将图片二值化的...图像处理用canvas,不太熟悉canvas的操作的同学,可以拿来做练习使用。

    web前端js显示后台接口pdf二进制流文件

    在这个场景中,"web前端js显示后台接口pdf二进制流文件"涉及到的技术点主要包括Web浏览器如何通过JavaScript处理从服务器获取的PDF二进制流数据,以及如何利用特定的库如PDF.js来在浏览器中直接展示PDF内容。...

    JavaScript案例-js二级联动菜单

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在实现动态交互效果方面有着显著的作用。...通过实践这样的案例,开发者可以更好地理解如何用JavaScript实现动态交互功能,从而创建更加生动、互动的网页。

    JS做的二级横向导航条

    总结起来,"JS做的二级横向导航条"是一个利用JavaScript增强用户体验的交互式设计,它通过监听鼠标事件动态展现二级菜单,并使用DOM操作实现选中状态的高亮显示。通过结合HTML、CSS和JavaScript,可以创建出既美观又...

    利用JS与HTML实现地级市的简易的二级联动

    在网页开发中,二级联动是一种常见的交互设计,通常用于下拉菜单或选择列表,例如省份与城市的选择。...通过这个项目,开发者可以更好地理解如何使用JavaScript与HTML协同工作,实现动态交互的网页效果。

    Node.js-JBB可以把Web数据封装成二进制格式的文件可以存储任意的二进制数据

    3. **数据解析**:当需要使用这些数据时,JBB可以反序列化二进制数据回原始的JavaScript对象或其他格式,供应用程序进一步处理。 在实际应用中,JBB可以用于各种场景,比如游戏开发中的资源存储、大数据分析时的...

    js制作的简易二级菜单

    总之,制作一个JavaScript二级菜单需要理解DOM操作、事件监听和CSS样式的应用。通过学习和实践,你可以创建出符合项目需求的个性化菜单,提升用户体验。在提供的"JS二级菜单"文件中,你可以找到具体的代码示例,...

    JS 二级下拉菜单。很漂亮,就是没实现三级下拉

    当鼠标悬停在一级菜单上时,JS可以控制二级菜单的显示和隐藏。例如,通过监听`mouseover`和`mouseout`事件,我们可以实现二级菜单的展开和收起。 下面是一个简单的二级下拉菜单的JS和CSS实现步骤: 1. **HTML 结构...

    Node.js安装包和二进制文件

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。这个压缩包包含了Node.js的安装文件以及相关的说明文档,适用于Windows操作系统。 标题中的"Node.js安装包和...

    js左侧边导航菜鼠标悬停展开二级菜单导航

    总的来说,"js左侧边导航菜鼠标悬停展开二级菜单导航"是一个常见的前端开发任务,涉及到HTML、CSS和JavaScript的结合使用,通过这些技术可以为用户提供更友好的交互体验。实际开发中,还需要根据项目需求进行定制和...

    原生JS上传文件,获取文件二进制数据及文件大小和文件名称

    本知识点将深入探讨如何使用原生JavaScript实现文件上传,获取文件的二进制数据、大小以及文件名称。 首先,我们需要一个HTML元素,通常是`&lt;input type="file"&gt;`,用于让用户选择要上传的文件。例如: ```html ``...

    js省市二级联动文件!

    7. **数据绑定**:在现代JavaScript框架(如Vue.js或React.js)中,数据绑定可以自动完成部分工作,使得状态管理更为简洁。但这个文件没有提到使用任何框架,所以可能使用的是原生JavaScript。 8. **兼容性考虑**:...

    海康威视 js 二次开发 web

    针对“海康威视 js 二次开发 web”的主题,我们可以深入探讨如何利用JavaScript进行Web端的二次开发,以便通过网络对海康威视的监控设备进行操作和管理。 首先,我们需要了解的是海康威视提供的SDK(Software ...

    js写的城市列表二级联动列表

    当用户在一级列表中选择某个省份时,JavaScript/jQuery将读取该选择,然后遍历`cities.js`中的数据,找到匹配的子城市,更新二级列表。这涉及到DOM元素的查找(`$("#province").val()`)、遍历(`for...in`循环)和...

    js-xlsx二次简单封装工具

    通过js-xlsx的二次封装,我们可以更便捷地在前端实现Excel导出功能,同时还能灵活调整样式。这个过程不仅降低了开发难度,还提高了代码的可维护性。然而,对于大量数据的处理,依然推荐后端进行优化,以避免浏览器...

    Js实现的二级目录下拉导航条

    - **事件监听**:使用JavaScript,我们可以监听用户的鼠标悬停(hover)事件,当用户将鼠标移到特定的一级菜单项上时,触发显示二级菜单的逻辑。 - **DOM操作**:通过`document.querySelector()`或`document....

Global site tag (gtag.js) - Google Analytics