call()和apply()的学习笔记
博客专区 > LM加强 的博客 > 博客详情
call()和apply()的学习笔记
LM加强 发表于6个月前
call()和apply()的学习笔记
  • 发表于 6个月前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 摘抄了知乎的一个大神的回答,看完觉得恍然大悟,链接 https://www.zhihu.com/question/20289071/answer/14644278
function cat(){
    return this;
}
cat.prototype = {
    food:"fish",
    say:function(){
        alert("i love "+this.food);
    }
}

var blackCat = new cat();
blackCat.say();

如果我们有一个对象whiteDog = {food:"bone"},我们不想对它重新定义say方法,那么我们可以通过call或apply用blackCat的say方法:blackCat.say.call(whiteDog); 或者 cat.prototype.say.call(whiteDog);

所以,可以看出call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其他对象的方法来操作。

用的比较多的,通过document.getElementsByTagName选择的dom节点是一种类似array的array。它不能应用Array下的push、pop等方法。我们可以通过:

var domNodes = Array.prototype .slice.call(document.getElementsByTagName("*"))

关于call和apply的详细用法参考http://www.cnblogs.com/itstone/archive/2012/07/23/call.html

共有 人打赏支持
粉丝 2
博文 205
码字总数 37509
×
LM加强
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: