理解Javascript的call、apply
2015-12-16 00:00
597 查看
call 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法.
注意:该函数的语法与 apply() 方法的语法几乎完全相同,唯一的区别在于,apply()方法接受的是一个参数数组,而 call()方法接受的是一系列参数列表。
了解完这两个方法的概念后,我们来一步一步理解他们的应用.
改变方法内this的指向
我们先来看下面这个例子
这两种调用执行的方式不一样,他们的结果也不一样,不一样在于say方法里面的this指向了不同的对象,第一次执行指向的是window,而我们以call方式执行,将say方法里面的this指向了person对象.
这是不是有点冒充别人的感觉.那我们这样有什么作用了?当然自己可以多多想想,到底能做什么! 我们继续往下面走.
实现继承机制
继承,这是高级面向对象的一种特性,用call我们可以将J***ASCRIPT有这种特点.
在看下面这个例子之前,必须好好理解上面的例子.
在这个例子里,Student函数继承了Person的name和age属性,就是通过Person.call(this)来实现,理解上面的例子后,应该是不难理解的.所以Student即拥有了Person的特点,又有自己的个性,比如这个this.school.
在这里,我们没有涉及到加入参数的传递,是方便大家的理解,需要加入参数传递,大家可以敲代码试一试,看看效果怎么样!
我们就先讲这两个例子吧,之后再进行深入学习。
js apply/call/caller/callee/bind使用方法与区别分析
JavaScript学习点滴 call、apply的区别
JavaScript中的apply()方法和call()方法使用介绍
js中继承的几种用法总结(apply,call,prototype)
JavaScript中的apply和call函数详解
注意:该函数的语法与 apply() 方法的语法几乎完全相同,唯一的区别在于,apply()方法接受的是一个参数数组,而 call()方法接受的是一系列参数列表。
了解完这两个方法的概念后,我们来一步一步理解他们的应用.
改变方法内this的指向
我们先来看下面这个例子
var name = "编程的人"; var age = 1; var person = { name:"公众号:bianchengderen", age:20 } function say(){ console.log("我叫:"+this.name+",年龄:"+this.age) } say();// 我叫: 编程的人,年龄: 1 say.call(person);//年龄:20
这两种调用执行的方式不一样,他们的结果也不一样,不一样在于say方法里面的this指向了不同的对象,第一次执行指向的是window,而我们以call方式执行,将say方法里面的this指向了person对象.
这是不是有点冒充别人的感觉.那我们这样有什么作用了?当然自己可以多多想想,到底能做什么! 我们继续往下面走.
实现继承机制
继承,这是高级面向对象的一种特性,用call我们可以将J***ASCRIPT有这种特点.
在看下面这个例子之前,必须好好理解上面的例子.
function Person(){ this.name = "编程的人"; this.age = 20; } function Student(){ Person.call(this); this.school = "地球"; } var student = new Student(); //下面打印出来: 编程的人,20,地球 console.log(student.name,student.age,student.school);
在这个例子里,Student函数继承了Person的name和age属性,就是通过Person.call(this)来实现,理解上面的例子后,应该是不难理解的.所以Student即拥有了Person的特点,又有自己的个性,比如这个this.school.
在这里,我们没有涉及到加入参数的传递,是方便大家的理解,需要加入参数传递,大家可以敲代码试一试,看看效果怎么样!
我们就先讲这两个例子吧,之后再进行深入学习。
您可能感兴趣的文章:
JS面向对象、prototype、call()、apply()js apply/call/caller/callee/bind使用方法与区别分析
JavaScript学习点滴 call、apply的区别
JavaScript中的apply()方法和call()方法使用介绍
js中继承的几种用法总结(apply,call,prototype)
JavaScript中的apply和call函数详解
相关文章推荐
- fastjson.jar使用方法
- 深入理解js--面向切面编程 AOP
- JavaScript节点
- JS的事件监听机制
- javascript的方法
- Javascript实现最简单的表单验证
- Javascript闭包函数快速上手
- JS中的this理解
- JS 中的闭包
- jstat的用法【待删】
- jsp的四个作用域
- jsp中的内置对象-工作日志
- JSON 中JsonConfig的使用
- js的showmodaldialg()解决弹出新页…
- 用js实现弹出form
- jsp中各文件夹的作用(以网上书城为…
- jsp放在web-inf下(转)
- JAVASCRIPT中经典面试题
- js数组对象
- bower解决js的依赖管理