本文並不是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