codewars 知识梳理(一)
刷题时,总用不会的,开此贴总结;
- 实现加减乘除的链式操作。举个栗子,(3).add(5).multiply(2) 这样的输出16。
这题我好像并不会,原因还是没能理解this这个玩意,不懂怎么用链把他们接起来,先看看答案吧。
Number.prototype.add = function(n){ return this+n } Number.prototype.subtract = function(n){ return this-n } Number.prototype.multiply = function(n){ return this*n } Number.prototype.divide = function(n){ return this/n } Number.prototype.square = function(){ return this*this }
答案就是这么简洁,好像很牛逼的样子。
然而 这里的this 不好理解
查了查关于this的资料:一般而言,在Javascript中,this指向函数执行时的当前对象。
还有一句 this该关键字在Javascript中和执行环境,而非声明环境有关。
var someone = { name: "Bob", showName: function(){ alert(this.name); } }; var other = { name: "Tom", showName: someone.showName } other.showName(); //Tom
this关键字虽然是在someone.showName中声明的,但运行的时候是other.showName,所以this指向other.showName函数的当前对象,即other,故最后alert出来的是other.name。
这篇挺好的 更多this 移步这里 http://www.cnblogs.com/justany/archive/2012/11/01/the_keyword_this_in_javascript.html
然后呢 理解理解就想通了。