封裝即把代碼隱藏起來,why?好好的為什么要隱藏起來,這里指的隱藏并非真的隱藏,而是把一些復雜的代碼給包裹起來,留下的是一個接口,到時候要用的時候直接調用這個接口即可,這樣那些不是干技術的也可以輕松上手了。有時我們還會把一些私有屬性屬性給封裝起來,如下:
function fn(){
var _name = 'javascript';
return {getName:function(){
return _name;
}};
}
fn().getName(); //javascript
或
var f = (function(){
var _name = 'javascript';
return function(){
return _name;
};
}());
或
var f = null;
(function(){
var _name = 'javascript';
f = _name;
}())
alert(f); //javascript
這樣外部就無法修改里面的_name值了,如果想讓外部修改可以這樣。
var f = (function(){
var _name = 'javascript';
return {
getName:function(){
return _name;
},
setName:function(name){
_name = name;
}
};
}());f.getName(); //javascript
f.setName('CSS3');
f.getName(); //CSS3
封裝還有一點就是把將來可能會發生變化的給封裝起來,另外就是它不在乎里面的代碼是怎么實現的,它只關心你留給他的接口是否有發生變化。如下就是一個封裝變化點。
function getByClass(className){
var tags = document.getElementsByTagName('*');
var arr = [];
var t = null;
for(var i=0,len=tags.length;i<len;i++){
t = tags[i].className.split(' ');
for(var k=0;k<t.length;k++){
if(t[k]===className){
arr.push(tags[i]);
break;
}
}
}
return arr;
}
getByClass('className');
這段代碼的意思是通過class來獲取元素,大家知道IE低版本瀏覽器不兼容document.getElementsByClassName。所以我們進行了封裝,使用的話就只需要通過getByClass來獲取,假如有一天瀏覽器都兼容document.getElementsByClassName這個方法的話可以這樣。
function getByClass(className){
return document.getElementsByClassName(className);
}
getByClass('li');
使用方法和上面還是一樣的,這就是封裝變化點,不改變接口,只改變內部細節。
文章列表
| 不含病毒。www.avast.com |
