理解Javascript的call、apply
作者:bea
call 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. 注意:该函数的语法与 apply() 方法的语法几乎完全相同,唯一的区别在于,apply()方法接受的是一个参数数组,而 call()方法接受的是一系列参数列表。 了解完这两个方法的概念后,我们来一步一步理解他们的应用. 改变方法内this的指向 我们先来看下面这个例子 var name = "编程的人";var age = 1;var person = {name:"公众号:bia
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();// 我叫: 编程的人,年龄: 1
say.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创建对象的方式小结(4种方式)
- javascript日期格式化方法小结
- javascript中Date format(js日期格式化)方法小结
- js实现下拉列表选中某个值的方法(3种方法)
- 详解js图片轮播效果实现原理
- js和jquery分别验证单选框、复选框、下拉框
- jQuery+CSS实现滑动的标签分栏切换效果
- JS禁用页面上所有控件的实现方法(附demo源码下载)
- jQuery选择器用法实例详解
- 深入分析jQuery的ready函数是如何工作的(工作原理)
- js倒计时简单实现方法
- 高效的jquery数字滚动特效
- JS函数的几种定义方式分析
- js实现文字闪烁特效的方法
- 基于jquery实现省市联动特效
- js实现网页收藏功能
- 详解javascript中原始数据类型Null和Undefined
- JS实现合并两个数组并去除重复项只留一个的方法
- JS数组合并push与concat区别分析