关于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()中给定要传的参数,一般个数上来说是一定的。
总的来说,当你想用一个方法,但是这个方法自身没有,而你刚好又知道谁有这个方法,这个时候就可以使用上述的方法,把别人的东西拿来为我所用。
相关文章推荐
- 高效开发Android App的10个建议
- 查看opengl版本,android源码
- Objective-c的@property 详解
- 【android】知识点
- iOS图片加载的消耗
- iOS的AssetsLibrary框架访问所有相片
- 【Android】标签页、计时器、单选按钮、复选按钮
- DIY一个局域网聊天的小程序-油聊
- android 内容提供程序的构建
- 【android初学日志】gravity 和 layout_gravity区别
- 【android初学日志】gravity 和 layout_gravity区别<三>
- android 数据库相关操作
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android中的线程通讯类Handler
- 移动端使用的WebKit私有属性(转)
- IOS 开发,调用打电话,发短信,打开网址
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~
- android之asset资源
- [2015-06-10 20:53:50 - Android SDK] Error when loading the SDK: