js 对call apply bind理解
Posted 上帝不是要你成功,而是让你去尝试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 对call apply bind理解相关的知识,希望对你有一定的参考价值。
请参考 http://www.cnblogs.com/xljzlw/p/3775162.html
1.call和apply的区别:参数类型不同
var mtt = { name: "mtt", sayHello: function (age) { console.log("hello, i am ", this.name + " " + age " years old"); } }; var xjs = { name: "xjs ",
}; mtt.sayHello(24);// hello, i am zlw 24 years old
apply参数需要是数组形式,而call参数需要用逗号隔开24,25
mtt .sayHello.call(xjs , 24);// hello, i am xjs 24 years old
mtt .sayHello.apply(xjs , [24]);// hello, i am xjs 24 years old
bind方法传递给调用函数的参数可以逐个列出,也可以写在数组中。bind方法与call、apply最大的不同就是前者返回一个绑定上下文的函数
mtt .sayHello.bind(xjs)(24); //hello, i am xlj 24 years old mtt .sayHello.bind(xjs)([24]); //hello, i am xlj 24 years old
2.bind
var bind = Function.prototype.call.bind(Function.prototype.bind);
var zlw = {
name: "zlw"
};
function hello () {
console.log("hello, I am ", this.name);
}
bind(hello, zlw)() // hello, I am zlw
以上是关于js 对call apply bind理解的主要内容,如果未能解决你的问题,请参考以下文章