Javascript的call、apply的理解

时间:2024-09-11 00:20:58 JavaScript 我要投稿
  • 相关推荐

Javascript的call、apply的理解

  call 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法.

  注意:该函数的语法与 apply() 方法的语法几乎完全相同,唯一的区别在于,apply()方法接受的是一个参数数组,而 call()方法接受的是一系列参数列表。

  了解完这两个方法的概念后,我们来一步一步理解他们的应用.

  改变方法内this的指向

  我们先来看下面这个例子

  var name = "编程的人";var age = 1;var person = {name:"公众号:bianchengderen",age:20}function say(){console.log("我叫:"+this.name+",年龄:"+this.age)}say();// 我叫: 编程的人,年龄: 1say.call(person);//年龄:20

  这两种调用执行的方式不一样,他们的结果也不一样,不一样在于say方法里面的this指向了不同的对象,第一次执行指向的是window,而我们以call方式执行,将say方法里面的this指向了person对象.

  这是不是有点冒充别人的感觉.那我们这样有什么作用了?当然自己可以多多想想,到底能做什么! 我们继续往下面走.

  实现继承机制继承,这是高级面向对象的一种特性,用call我们可以将JAVASCRIPT有这种特点.

  在看下面这个例子之前,必须好好理解上面的例子.

  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.

  在这里,我们没有涉及到加入参数的传递,是方便大家的理解,需要加入参数传递,大家可以敲代码试一试,看看效果怎么样!

  我们就先讲这两个例子吧,之后再进行深入学习。

【Javascript的call、apply的理解】相关文章:

对javascript的理解08-08

理解JavaScript原型链教程09-02

javascript的闭包概念怎么理解06-15

javascript面向对象中的对象怎么理解09-02

浅谈javascript中的单线程理解08-16

有关深入理解JavaScript中的并行处理的介绍10-14

常用的JavaScript模式09-22

Javascript的this用法简述08-15

JavaScript学习笔记08-24

JavaScript 基础教学09-29