zoukankan      html  css  js  c++  java
  • javacsript中call() 函数

    call 方法
    调用一个对象的一个方法,以另一个对象替换当前对象。

    call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
    参数1:thisObj
    可选项。将被用作当前对象的对象。
    参数2:arg1, arg2, , argN
    可选项。将被传递方法参数序列。
    说明:
    call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
    如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

    看懂了没?说实话我没看懂,哈哈,没看懂继续往下看。

    call 方法在js继承中经常看到,也一直搞不懂,这到底是什么东西,看下面这段代码:

    01.function Person(name,age){
    02.   this.name = name;
    03.   this.age=age;
    04.   this.alertName = function(){
    05.    alert(this.name);
    06.   }
    07.   this.alertAge = function(){
    08.    alert(this.age);
    09.   }
    10.  }
    11.  
    12.  function webDever(name,age,sex){
    13.   Person.call(this,name,age);
    14.   this.sex=sex;
    15.   this.alertSex = function(){
    16.    alert(this.sex);
    17.   }
    18.  }
    19.  var test= new webDever("WEB开发",28,"男");
    20.  test.alertName();//WEB开发
    21.  test.alertAge();//28
    22.  test.alertSex();//男

    这样 webDever类就继承Person了,Person.call(this,name,age) 的 意思就是使用 Person对象代替this对象,那么 webDever中不就有Person的所有属性和方法了吗,test对象就能够直接调用Person的方法以及属性了;

    说的再明白一点,就是相当于将webDever中的Person.call(this,name,age)这部分代码替换为Person类的:

    1.this.name = name;
    2.   this.age=age;
    3.   this.alertName = function(){
    4.    alert(this.name);
    5.   }
    6.   this.alertAge = function(){
    7.    alert(this.age);
    8.   }

    这样webDever类就相当于:

    01.  function webDever(name,age,sex){
    02.   this.name = name;
    03.   this.age=age;
    04.   this.alertName = function(){
    05.    alert(this.name);
    06.   }
    07.   this.alertAge = function(){
    08.    alert(this.age);
    09.   }
    10.  
    11.   this.sex=sex;
    12.   this.alertSex = function(){
    13.    alert(this.sex);
    14.   }
    15.  }
    16.  var test= new webDever("WEB开发",28,"男");
    17.  test.alertName();//WEB开发
    18.  test.alertAge();//28
    19.  test.alertSex();//男
  • 相关阅读:
    9-python 的ProxyHandler处理器(代理设置)
    2018.2.7 css 的一些方法盒子模型
    2018.2.6 JS-判断用户浏览器
    2018.2.5 PHP如何写好一个程序用框架
    2018. 2.4 Java中集合嵌套集合的练习
    2018.2.3 Centos 的vim好看的主题配置及JDK的安装配置
    2018.2.2 java中的Date如何获取 年月日时分秒
    2018.2.2 JavaScript中的封装
    2018.1.30 PHP编程之验证码
    2018.1.29 计算机二级错题汇总(二)
  • 原文地址:https://www.cnblogs.com/webblog/p/1553699.html
Copyright © 2011-2022 走看看