您的位置:首页 > 移动开发

关于call()和apply()方法的一点心得

2015-06-10 22:08 337 查看

1. 这两个是JS原生方法;

2. 自我理解:这个给“懒人”准备的方法;

3. 举例(重点):

//example 1:

function Person(name, age)

{

this.name = name;

this.age = age;

}

function Student()

{

//do nothing

}

var stu = new Student();

alert('name: ' + stu.name + '\n' + 'age: ' + stu.age); // name: undefined age:undefined

小结:以上未能弹出学生的姓名和年龄信息,因为我们在学生的类里什么都没做。



//example 2:

function Person(name, age)

{

this.name = name;

this.age = age;

}

function Student()

{

Person.apply(this, arguments);

}

var stu = new Student('Tom', 21);

alert('name: ' + stu.name + '\n' + 'age: ' + stu.age); // name: Tom age: 21



//example 3:

function Person(name, age)

{

this.name = name;

this.age = age;

}

function Student()

{

Person.call(this, 'Tom', 21);

}

var stu = new Student();

alert('name: ' + stu.name + '\n' + 'age: ' + stu.age);//name: Tom age: 21



总结:

1. 当Student类中什么都没有时,仍然想要显示学生的姓名和年龄,那么就要借用Person类中的方法来实现。

2. 如何借用?使用apply()或者call(), 因为Person中有name和age两个属性,借过来用的话,Student类中当然也就有

了name和age属性啊!在创建好学生类的实例后,就可以使用name和age属性了。

3. apply()和call()有和区别?二者的区别在于参数的不同。apply()中使用的是arguments, 一般适合参数不确定的时候使用;

call()中给定要传的参数,一般个数上来说是一定的。

总的来说,当你想用一个方法,但是这个方法自身没有,而你刚好又知道谁有这个方法,这个时候就可以使用上述的方法,把别人的东西拿来为我所用。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: