发表于: 2017-07-01 19:17:15

1 1051


今天完成的事情:

1.查找小课堂的资料,学习了call和apply方法

在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。 JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。

举个栗子:

fruits.prototype = {
   color: "red",
   say: function() {
       console.log("My color is " + this.color);
   }
};

var apple = new fruits;
apple.say();    //输出My color is red

但是如果我们有一个对象banana= {color : "yellow"} ,我们不想对它重新定义 say 方法,那么我们可以通过 call 或 apply 用 apple 的 say 方法:

banana = { color: "yellow" } 

apple.say.call(banana); //My color is yellow 

apple.say.apply(banana); //My color is yellow

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

明天的计划:继续JS任务,完善小课堂内容

遇到的问题:之前没有用过call,apply,查找资料过程中发现很多demo涉及了prototype,所以又去翻了高程,看了原型模式,不过看不太懂,因为任务比较赶,所以就先撂下没看了

收获:了解了call和apply的知识点


返回列表 返回列表
评论

    分享到