日常js之-對象

本文並不是javascript教程或是說教類文章,純粹是個人記錄自己工作中使用js的一些心得。
 
    在《javascript權威指南》中說到,js中一切皆為對象。那我們總結下 一共有哪些對象,並且都要怎麼定義他們,怎麼使用他們,怎麼擴展他們。
 
1. 定義對象
    首先我們需要知道,我們要怎麼定義他們。
  
   1.1    現在最火的json對象:用在方便同ajax交互下. 
       var json = {"name":"hc","sex":"1"};
       //使用www.aiwalls.com
       alert(json.name+" "+json.sex); 
     為什麼json會這麼火呢?因為在我沒有接觸json前.通過ajax返回數據,解析文本串,是通過”|”來的. 例如:  
       var strResult = ajax.responseText;
     //ajax.responseTex為假設存放ajax返回文本.  1|id=’fffff’|name=’ccc’   如果我要獲取name  我就需要   var attr = strResult.split(‘|' )[2];   這樣既不直觀也不面向對象。所以 當我接觸瞭json後。一下就替換到字符串分割的這種做法瞭.    
 
同時順帶說題外話,json字符串格式要求也比較松散 .上面的 var json={“name”} 的 name,可以使用雙引號,單引號,甚至不用引號都可以。但是如果你使用jQuery等外帶框架來進行解析的時候,則必須帶上雙引號。如果你使用最松散的方式來解析的話 var json = eval("(“+str+”)”);//這樣要求最小,但是容易被註入。
   1.2   最原生的對象 :  object
 
var obj  = new Object();
//等價的json申明方式就是 
var obj = {}; 
//所以在各大js框架中,基本上看不到new Object()這種寫法,都是 obj = {}的寫法;簡單明瞭
 
1.3   最像類的對象: function
 function User(name,sex){
     //這樣是申明類的屬性
 
     this.name=name;
 
     this.sex = sex;
   
     //這樣是申明類的公共方法
    this.getMyFullName=function(){
     return _firstname+this.name;
     }
     
    //這個是定義類的私有變量
    var _name= name;
    var _firstname="黃";    
   
    //這個是定義類的私有方法
    function getSex(){
    }
 }
定義好一個類,接下來就是實例他的。和C#一樣,通過new 類來實例化他
var my = new User("hc","1");
alert(my.name);
alert(my.getMyFullName());
  
2.擴展對象
 在各個js框架中基本都是這麼幾種方式來定義對象。我們知道怎麼定義對象後。就需要知道怎麼擴展他們。
 
 要擴展對象,無非分為2種 ,一種是擴展整個類,一種就是隻擴展某個類的實例化
  
 
 2.1 prototype 屬性
    
   prototype 屬性就是javascript用來滿足我們擴展整個類 這個需求而產生的。
   prototype 定義是 該屬性指向當前對象所指向的原型。
   光說定義和概念肯定不好理解,打個比方。如果你有需求想要在所有字符串或者數組上加一個方法,你要找誰?
微軟才不會給你加個方法。所以這時候 prototype派上用場瞭.
 String.prototype.getTempMethod = function () {
            return "hc";
}
var str = "c";
alert(str.getTempMethod());//這樣在string中你就擁有的你自己的專屬方法
  
 2.2 私有擴展
 
如果你隻想你當前對象擴展一個方法,那麼非常的簡單,因為在js中所有方法,字段都是屬性。即使是不存在屬性方法也可以直接使用
隻是它的值為undefined
     
//這時候alert的方法是undefined
var obj = {};
//這時候就在這個對象上定義瞭一個alert方法瞭
obj.alert = function(){{
}

 摘自 ksh.xy
 

發佈留言