关于javascript的call和apply的试用方法

call和apply其实相当于继承,
如,以下两个函数,
1.不传输参数使用
首先是 父类 函数
function Father(){
this.name = ‘sll’;
this.money = ‘10000’;
this.sayName = (){
return this.name;
}

}
接着是子类函数
function Children(name,money){

console.log(name);	//输出	'qiupan'
console.log(money);	//输出undefined,没有传入该值

Father.call(this);	//开始调用父类

console.log(name);	//输出	'sll',调用了父类的值
console.log(money);	//输出10000,调用了父类的值
this.name = name;

}
var children = new Children(‘qiupan’);
children.sayName(); //输出 ‘qiupan’,此函数为父类当中的函数,但我们在这之前已经为this.name赋予了新的值,即将子类当中的name的值,传到父类当中的this.sayName = (){
return this.name;
}函数表达式当中,所以打印出的值为便成为了子类中的值,

注: 一定要注意父类的调用顺序哦,上诉这个例子就是因为执行的顺序不同才会产生这些结果

2.传输参数使用
//父类 Person

function Person(name,age){
	this.name = name;	//接收子类当中的name的值
	this.age = age;		//接收子类当中的age的值
	console.log(name);	//并输出   sll
	console.log(age);		//并输出   21
}

//子类 Student
function Student(name = ‘sll’,age=‘21’){
Person.call(this,name,age); 调用父类,将参数值传给分类
}
var student = new Student();

3.就下来就是apply的使用方法,
apply的使用方法和call使用差不多,唯一的区别就是,当apply需要传输参数给父类需要使用数组来进行传输,因为在不传输参数是时,apply和call的使用方法是一样的,所以就不再讲解,接下来讲解一下有参数的情况

function Person(name,sex,money) {
this.name =name;
this.money = money;
this.sex = sex;
console.log(‘Person的值’+this.name); //输出沈伦莉
console.log(‘Person的值’+this.money); //输出676787
// console.log(‘Person的值’+this.sex); //输出男
}

//子类 Chinese
function Chinese(name,sex,money) {
//借助 call 实现继承
Person.apply(this,[name,sex,money]);
}
var chinese = new Chinese(‘沈伦莉’,‘男’,‘676787’);

以上就是关于call和apply基本用法的讲解,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值