码迷,mamicode.com
首页 > Web开发 > 详细

JS里的函数的call()与back()方法

时间:2018-04-25 17:06:47      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:foo   UNC   love   span   节点   asc   div   ted   对象   


function cat(){}
cat.prototype={  food:"fish", say: function(){ alert("I love "+this.food)}
var blackCat = new cat;
blackCat.say()

  

 

现在有WhiteCat={food:‘rice‘},就有了我们不想对它重新定义say方法,那么我们可以通过call或apply用blackCat的say方法:blackCat.say.call(whiteDog);

call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。

因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念

我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合

(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换)

var a={length:2,0:‘first‘,1:‘second‘};
Array.prototype.slice.call(a);//  ["first", "second"]
 
var a={length:2};
Array.prototype.slice.call(a);//  [undefined, undefined]

 

JS里的函数的call()与back()方法

标签:foo   UNC   love   span   节点   asc   div   ted   对象   

原文地址:https://www.cnblogs.com/jack-liu6/p/8945229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!