发表于: 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的知识点
评论