所谓的“链式”:是指调用一个对象的方法后返回的是这个对象自身,也就是返回this,因此可以进行链式调用。
所谓“闭包”是指由于JavaScript中的变量没有像Java、C++那样的块作用域(块通常用{}包含起来),而只有function范围的作用域,再加上函数中的匿名函数赋予一个函数之外的变量,也就是函数之外有变量(也叫句柄、指针)引用了函数内部定义的匿名函数,这时候当这个变量没有被delete或赋予null,则调用这个函数时,JavaScript的虚拟机会保留和这个匿名函数同级的所有变量,直到这个引用句柄被销毁(指向匿名对象的链接被断开),这些function作用域的变量才得以清除。
<html>
<head>
<title>JavaScript原理学习</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<script type="text/javascript">
function jQueryOBJ(el) {
this.el = el;
}
jQueryOBJ.prototype = {
css : function(key, value) {
this.el.style[key] = value;
return this;
},
hide:function() {
this.el.style["display"] = "none";
return this;
},
show:function() {
this.el.style["display"] = "block";
return this;
}
}
var $ = function(idString) {
var el = document.getElementById(idString);
var JOB = new jQueryOBJ(el);
return JOB;
}
function init() {
$("ok").css("border", "2px red solid").show();
}
</script>
</head>
<body>
链式调用例子如:
$("ok").css("border", "2px red solid").show();
<br><br><br><br>
<input type="button" value="执行" οnclick="init()"/>
<br>
<div id="ok" style="display:none;">asdlf</div>
</body>
</html>