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();//男

转载于:https://www.cnblogs.com/webblog/archive/2009/08/25/1553699.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值