call/apply以及this指向的理解
2018-10-10 08:39:14来源:博客园 阅读 ()
javascript是面向对象的语言,Function也是一种对象,有自己的属性和方法。call和apply就是js函数自带方法,挂在Fucntion.prototype上。
一般调用某函数时,直接“函数名(参数)”的写法即可,函数内部的this指向函数的调用者。
function add(a,b){
console.log(this);
return a+b;
}
add(1,2) // 默认window调用,this指向window
var math = {
add:function(a,b){
console.log(this);
return a+b;
}
}
math.add(1,2) // this指向math
call和apply的作用是给函数重新指定调用者,指定this的指向:
var name = "WINDOW";
var someone = {
name: "yource"
};
/** 一般写法 **/
function greet1(person) {
var reply = "Hello, " + person.name;
console.log(reply)
}
greet1(someone); // Hello, yource
/** 使用call/apply **/
function greet2() {
var reply = "Hello, " + this.name;
console.log(reply)
}
greet2(); // Hello, WINDOW
greet2.call(someone); // Hello, yource
greet2.apply(someone); // Hello, yource
call和apply的不同之处仅在于提供参数的方式:call使用一组参数列表,apply使用参数数组。
/*apply()方法*/ function.apply(thisObj[, argArray]) /*call()方法*/ function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);
apply最多只能有两个参数:调用者thisObj和一个数组argArray。call可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JavaScript中的apply和call函数详解 2020-01-07
- jquery操作checked属性以及disabled属性的多种方法 2019-11-24
- javascript call方法使用说明 2019-10-08
- 关于获取input标签属性的获取以及更改,此处用到的是readonl 2019-08-14
- call,apply,bind的理解 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
