库:lib,方法库,或组件库。核心库是给二次开发同学用的,它严谨、符合标准、独立健壮、无污染。
框架:framework,主要是给用户使用,当然也给二次开发者用,它易使用、易扩展、可持续发展、可控。
有些框架,依赖它开发的东西,只能在它的树荫下生存,而无法独立。这样的框架,就不能当库来用。如jquery。
有些库,几乎没有框架的特性,所以易用性很差,如YUI2,所以,它的用户群也只能局限于二次开发者,或水平比较高的开发者。
为作框架,可能为了易用性,牺牲了严谨性。例如:渲染String与Array的prototype。这就与库的无污染理念冲突。
所以,一个产品,如果需要它自己即能当框架,也能当库,那么,它就需要权衡取舍。当然,他也可以选择有多种形式的输出(输出成独立的库,或是易用的框架)。
所以jquery是一个框架,其实目前来说,js库都可以叫作js框架,js类包是使用了oo的思想,封装的一个方法包,jquery也可以看作一个类包
js闭包是一个拥有许多变量和绑定了这些变量的环境的表达式。
闭包的特点:
1、作为一个函数变量的一个引用,当函数返回时,其处于激活状态,一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
2、js闭包允许使用内部函数,这些内部函数可以访问它们所在的外部函数中声明的参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
扩展资料:
js闭包实例:
1、函数内部可以直接读取全局变量
<script type="text/javascript">
var n=100
function parent(){
alert(n)
}
2、读取函数内的局部变量
parent()//100
</script>
function parent(){
m=50
}
parent()
alert(m)//50
参考资料来源:百度百科:javascript闭包
函数对象可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性在计算机科学文献中称之为“闭包”。从技术角度讲,所有的JavaScript函数都是闭包: 它们都是对象,它们都关联到作用域链。
实现计数器
介绍利用闭包实现计数器,请看以下代码:
var counter = (function() {
var count = 0
return function() {
return count ++
}
})()
以上代码定义了一个立即执行的函数,count遍历只能在这个匿名函数中可以使用。