type = (function(){
var object_prototype_toString = Object.prototype.toString
return function(obj){
return object_prototype_toString.call(obj).replace('[object ','').replace(']','')
}
})()
看到一段代码,如上,个人理解这里应该应用了闭包,但是不太明白,这样写跟直接将type定义为
type = function(obj){
var object_prototype_toString = Object.prototype.toString;
return object_prototype_toString.call(obj).replace('[object ','').replace(']','')
}
的好处是什么呢?可以少声明var object_prototype_toString = Object.prototype.toString;
?
两种写法基本上是一样的。只有一点区别:
var object_prototype_toString = Object.prototype.toString;
的执行次数。第一种方式,只执行一次;第二种方式,每调一次
type
函数都会执行一次。从这个角度看,第一种方式好一些。