moziila官方文档链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call
fun.call(thisArg[, arg1[, arg2[, ...]]])
1.其中fun表示原始的方法对象;
2.参数:
  thisArg表示最终使用的对象;
  arg1和arg2为该方法的参数。
简单的说,就是使用:原始方法对象.call(最终的对象,方法参数列表),这样就使得原始方法中的用到的this对象变成了最终的对象,而不是原始方法所对应的对象。
//如下实例:
function B(){
this.name = 'kitty';
this.age = 24;
this.say = function(){
console.debug(this.name)
};
} function C(){
this.name = 'tab';
}
var c = new C();
console.debug(b.say.call(c));//就是将b对象中的say方法的调用者对象this替换为c对象,那么此时say方法中的this对象就是c对象了。
---------------------------------------
上面代码的console打印结果:

--------------------------------------- 3.【注】:使用call方法可以实现继承:
   可以让call()中的对象调用当前对象所拥有的function。你可以使用call()来实现继承:写一个方法,然后让另外一个新的对象来继承它(而不是在新对象中再写一次这个方法)。
function Old(age){
this.age = age;
this.type = age>18?'adult':'children';
}; function Sub(){
this.name = 'son';
this.subM = function(age){
Old.call(this,age);
}
}
var s = new Sub();
console.debug('未调用父类构造方法前的type属性是:'+s.type)
console.debug('未调用父类构造方法前的子类对象是:')
console.debug(s)
console.debug('------------------------------------------------');
s.subM(111)
console.debug('已调用父类构造方法前的type属性是:'+s.type)
console.debug('已调用父类构造方法后的子类对象是:')
console.debug(s) //通过在子类的构造函数中调用父类的构造函数,实现了将原先定义在父类构造函数中的属相创建及赋值操作在此时由于使用了call方法将this指向了子类对象,因此此时该父类构造方法将属性添到了子类对象上。

--------------------------------------------------------------

上面代码的console打印结果:

--------------------------------------------------------------

 
 

【JavaScript】js中的call方法的更多相关文章

  1. JavaScript -- 时光流逝(二):js中数组的方法

    JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...

  2. js中的tostring()方法

    http://blog.sina.com.cn/s/blog_85c1dc100101bxgg.html js中的tostring()方法 (2013-11-12 11:07:43) 转载▼ 标签: ...

  3. JS中通过call方法实现继承

    原文:JS中通过call方法实现继承 讲解都写在注释里面了,有不对的地方请拍砖,谢谢! <html xmlns="http://www.w3.org/1999/xhtml"& ...

  4. ASP.NET#使用母版时,如果要使用js中的getElementById()方法取得某个内容页的元素时要注意的问题

    当使用母版,要使用js中的getElementById()方法取得某个内容页的元素时,所选取的id并不是母版中内容页的id,而是在设计内容页时设定的id例子:母版页: ...... <head ...

  5. JS中split使用方法和数组中元素的删除

    JS中split使用方法和数组中元素的删除 JS中split使用方法 <script language="javascript"> function spli(){ d ...

  6. JS中的splice方法

    JS中的splice方法 定义和用法 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组(集合). 语法 arrayObject.splice(ind ...

  7. 秒味课堂Angular js笔记------Angular js中的工具方法

    Angular js中的工具方法 angular.isArray angular.isDate angular.isDefined angular.isUndefined angular.isFunc ...

  8. jQuery与JS中的map()方法使用

    1.jquery中的map()方法 首先看一个简单的实例: $("p").append( $("input").map(function(){ return $ ...

  9. JS与OC交互,JS中调用OC方法(获取JSContext的方式)

    最近用到JS和OC原生方法调用的问题,查了许多资料都语焉不详,自己记录一下吧,如果有误欢迎联系我指出. JS中调用OC方法有三种方式: 1.通过获取JSContext的方式直接调用OC方法 2.通过继 ...

随机推荐

  1. ORA-00054: 资源正忙 --锁表的解决方法

    问题描述 ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 发生异常 原因:其他Session已经对目标表做了操作,且未提交操作,导致锁表,新的Session无法 ...

  2. k8s部署03-----常用运维命令

    kubectl常用命令 kubectl get nodes #查看集群中有多少个node kubectl describe node <node_name> #查看某个node的详细信息 ...

  3. js内存空间及this关键词详解

    http://mp.weixin.qq.com/s/FYFepXmkzzDYNLKhpovYFA

  4. 【转】APIJSON,让接口见鬼去吧!

    我: APIJSON,让接口和文档见鬼去吧! https://github.com/TommyLemon/APIJSON 服务端: 什么鬼? 客户端: APIJSON是啥? 我: APIJSON是一种 ...

  5. WPF Win32 API 嵌入Form 窗体

    WIn32 API: public class Win32Native { [DllImport("user32.dll", SetLastError = true, CharSe ...

  6. monkey 查找闪退页面的方法

    使用了命令 adb shell monkey  --pct-touch 100 -v -p  com.iBer.iBerAppV2  5000 >/Users/kaibinliu/Desktop ...

  7. mybatisplus

    1.selectById 根据主键查询一个对象,如果没有查到,则返回null: GxySchoolDto isExist = gxySchoolMapper.selectById(schoolEnti ...

  8. java+ueditor word粘贴上传

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  9. 数学建模python matlab 编程(指派问题)

    指派授课问题 现有A.B.C.D四门课程,需由甲.乙.丙.丁四人讲授,并且规定: 每人只讲且必须讲1门课:每门课必须且只需1人讲. 四人分别讲每门课的费用示于表中: 课 费用 人 A B C D 甲 ...

  10. 高可用安装k8s1.13.0 --不能带cavisor、不能加cni ,带上这两个总是报错,kubelet无法启动

    高可用安装k8s1.13.0 --不能带cavisor,总是报错,kubelet无法启动