文章出處

  封裝即把代碼隱藏起來,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
文章標籤
全站熱搜
創作者介紹
創作者 AutoPoster 的頭像
AutoPoster

互聯網 - 大數據

AutoPoster 發表在 痞客邦 留言(0) 人氣(8)