Javascript筆記一 js以及json基礎(chǔ)使用說(shuō)明
更新時(shí)間:2010年05月22日 22:06:41 作者:
JavaScript中的數(shù)據(jù)很簡(jiǎn)潔的。簡(jiǎn)單數(shù)據(jù)只有 undefined, null, boolean, number和string這五種,而復(fù)雜數(shù)據(jù)只有一種,即object。
JavaScript中的代碼只體現(xiàn)為一種形式,就是function。
注意:以上單詞都是小寫的,不要和Number, String, Object, Function等JavaScript內(nèi)置函數(shù)混淆,JavaScript語(yǔ)言是區(qū)分大小寫。
typeof(null)返回object,但null并非object。
JavaScript的代碼就只有function一種形式,function就是函數(shù)的類型。函數(shù)的寫法有“定義式”和“變量式”。
定義式的函數(shù)語(yǔ)句會(huì)優(yōu)先執(zhí)行。函數(shù)定義執(zhí)行完之后,才會(huì)按順序執(zhí)行其他語(yǔ)句代碼,JavaScript是一段段地執(zhí)行的。
我們來(lái)看看下面的代碼:
var myfunc = function ()
{
alert("hello");
};
myfunc(); //第一次調(diào)用myfunc,輸出hello
myfunc = function ()
{
alert("yeah");
};
myfunc(); //第二次調(diào)用myfunc,將輸出yeah
這個(gè)程序運(yùn)行的結(jié)果告訴我們:在第一次調(diào)用函數(shù)之后,函數(shù)變量又被賦予了新的函數(shù)代碼體,使得第二次調(diào)用該函數(shù)時(shí),出現(xiàn)了不同的輸出。
好了,我們又來(lái)把上面的代碼改成定義式的函數(shù)形式:
function myfunc ()
{
alert("hello");
};
myfunc(); //這里調(diào)用myfunc,輸出yeah而不是hello
function myfunc ()
{
alert("yeah");
};
myfunc(); //這里調(diào)用myfunc,當(dāng)然輸出yeah
按理說(shuō),兩個(gè)簽名完全相同的函數(shù),在其他編程語(yǔ)言中應(yīng)該是非法的。但在JavaScript中,這沒(méi)錯(cuò)。JavaScript執(zhí)行引擎并非一行一行地分析和執(zhí)行程序,而是一段一段地分析執(zhí)行的。在第一次調(diào)用myfunc之前,第一個(gè)函數(shù)語(yǔ)句定義的代碼邏輯,已被第二個(gè)函數(shù)定義語(yǔ)句覆蓋了。所以,兩次都調(diào)用都是執(zhí)行最后一個(gè)函數(shù)邏輯了。
創(chuàng)建對(duì)象
<script type="text/javascript">
function test() {
var bo = {}; //建立一個(gè)對(duì)象
bo.姓名 = "張三"; //對(duì)象的一個(gè)屬性
bo.年齡 = 18;
bo.showInfo = function() { alert(bo.姓名 + " " + bo.年齡); }; //對(duì)象的一個(gè)方法
alert(bo["姓名"]); //可以將對(duì)象當(dāng)數(shù)組以屬性名作為下標(biāo)來(lái)訪問(wèn)屬性
bo["showInfo"](); //可以將對(duì)象當(dāng)數(shù)組以方法名作為下標(biāo)來(lái)調(diào)用方法
//遍歷對(duì)象里所有的屬性和方法,并輸出其類型
for (var s in bo) {
alert(s + " 是 " + typeof (bo[s]));
}
}
</script>
JSON為創(chuàng)建對(duì)象提供了非常簡(jiǎn)單的方法,JavaScript Object Notation(縮寫JSON),翻譯為中文就是“JavaScript對(duì)象表示法”。
創(chuàng)建一個(gè)沒(méi)有任何屬性的對(duì)象:
var o = {};
創(chuàng)建一個(gè)對(duì)象并設(shè)置屬性及初始值:
var person = {name: "Angel", age: 18, married: false};
創(chuàng)建一個(gè)對(duì)象并設(shè)置屬性和方法:
var speaker = {text: "Hello World", say: function(){alert(this.text)}};
創(chuàng)建一個(gè)更復(fù)雜的對(duì)象,嵌套其他對(duì)象和對(duì)象數(shù)組等:
var company =
{
name: "Microsoft",
product: "softwares",
chairman: {name: "Bill Gates", age: 53, Married: true},
employees: [{name: "Angel", age: 26, Married: false}, {name: "Hanson", age: 32, Marred: true}],
readme: function() {document.write(this.name + " product " + this.product);}
};
JSON的形式就是用大括“{}”號(hào)包括起來(lái)的項(xiàng)目列表,每一個(gè)項(xiàng)目間并用逗號(hào)“,”分隔,而項(xiàng)目就是用冒號(hào)“:”分隔的屬性名和屬性值。這是典型的字典表示形式,也再次表明了 JavaScript里的對(duì)象就是字典結(jié)構(gòu)。不管多么復(fù)雜的對(duì)象,都可以被一句JSON代碼來(lái)創(chuàng)建并賦值。
其實(shí),JSON就是JavaScript對(duì)象最好的序列化形式,它比XML更簡(jiǎn)潔也更省空間。對(duì)象可以作為一個(gè)JSON形式的字符串,在網(wǎng)絡(luò)間自由傳遞和交換信息。而當(dāng)需要將這個(gè)JSON字符串變成一個(gè)JavaScript對(duì)象時(shí),只需要使用eval函數(shù)這個(gè)強(qiáng)大的數(shù)碼轉(zhuǎn)換引擎,就立即能得到一個(gè)JavaScript內(nèi)存對(duì)象。正是由于JSON的這種簡(jiǎn)單樸素的天生麗質(zhì),才使得她在AJAX舞臺(tái)上成為璀璨奪目的明星。
注意:以上單詞都是小寫的,不要和Number, String, Object, Function等JavaScript內(nèi)置函數(shù)混淆,JavaScript語(yǔ)言是區(qū)分大小寫。
typeof(null)返回object,但null并非object。
JavaScript的代碼就只有function一種形式,function就是函數(shù)的類型。函數(shù)的寫法有“定義式”和“變量式”。
定義式的函數(shù)語(yǔ)句會(huì)優(yōu)先執(zhí)行。函數(shù)定義執(zhí)行完之后,才會(huì)按順序執(zhí)行其他語(yǔ)句代碼,JavaScript是一段段地執(zhí)行的。
我們來(lái)看看下面的代碼:
復(fù)制代碼 代碼如下:
var myfunc = function ()
{
alert("hello");
};
myfunc(); //第一次調(diào)用myfunc,輸出hello
myfunc = function ()
{
alert("yeah");
};
myfunc(); //第二次調(diào)用myfunc,將輸出yeah
這個(gè)程序運(yùn)行的結(jié)果告訴我們:在第一次調(diào)用函數(shù)之后,函數(shù)變量又被賦予了新的函數(shù)代碼體,使得第二次調(diào)用該函數(shù)時(shí),出現(xiàn)了不同的輸出。
好了,我們又來(lái)把上面的代碼改成定義式的函數(shù)形式:
復(fù)制代碼 代碼如下:
function myfunc ()
{
alert("hello");
};
myfunc(); //這里調(diào)用myfunc,輸出yeah而不是hello
function myfunc ()
{
alert("yeah");
};
myfunc(); //這里調(diào)用myfunc,當(dāng)然輸出yeah
按理說(shuō),兩個(gè)簽名完全相同的函數(shù),在其他編程語(yǔ)言中應(yīng)該是非法的。但在JavaScript中,這沒(méi)錯(cuò)。JavaScript執(zhí)行引擎并非一行一行地分析和執(zhí)行程序,而是一段一段地分析執(zhí)行的。在第一次調(diào)用myfunc之前,第一個(gè)函數(shù)語(yǔ)句定義的代碼邏輯,已被第二個(gè)函數(shù)定義語(yǔ)句覆蓋了。所以,兩次都調(diào)用都是執(zhí)行最后一個(gè)函數(shù)邏輯了。
創(chuàng)建對(duì)象
復(fù)制代碼 代碼如下:
<script type="text/javascript">
function test() {
var bo = {}; //建立一個(gè)對(duì)象
bo.姓名 = "張三"; //對(duì)象的一個(gè)屬性
bo.年齡 = 18;
bo.showInfo = function() { alert(bo.姓名 + " " + bo.年齡); }; //對(duì)象的一個(gè)方法
alert(bo["姓名"]); //可以將對(duì)象當(dāng)數(shù)組以屬性名作為下標(biāo)來(lái)訪問(wèn)屬性
bo["showInfo"](); //可以將對(duì)象當(dāng)數(shù)組以方法名作為下標(biāo)來(lái)調(diào)用方法
//遍歷對(duì)象里所有的屬性和方法,并輸出其類型
for (var s in bo) {
alert(s + " 是 " + typeof (bo[s]));
}
}
</script>
JSON為創(chuàng)建對(duì)象提供了非常簡(jiǎn)單的方法,JavaScript Object Notation(縮寫JSON),翻譯為中文就是“JavaScript對(duì)象表示法”。
創(chuàng)建一個(gè)沒(méi)有任何屬性的對(duì)象:
var o = {};
創(chuàng)建一個(gè)對(duì)象并設(shè)置屬性及初始值:
var person = {name: "Angel", age: 18, married: false};
創(chuàng)建一個(gè)對(duì)象并設(shè)置屬性和方法:
var speaker = {text: "Hello World", say: function(){alert(this.text)}};
創(chuàng)建一個(gè)更復(fù)雜的對(duì)象,嵌套其他對(duì)象和對(duì)象數(shù)組等:
復(fù)制代碼 代碼如下:
var company =
{
name: "Microsoft",
product: "softwares",
chairman: {name: "Bill Gates", age: 53, Married: true},
employees: [{name: "Angel", age: 26, Married: false}, {name: "Hanson", age: 32, Marred: true}],
readme: function() {document.write(this.name + " product " + this.product);}
};
JSON的形式就是用大括“{}”號(hào)包括起來(lái)的項(xiàng)目列表,每一個(gè)項(xiàng)目間并用逗號(hào)“,”分隔,而項(xiàng)目就是用冒號(hào)“:”分隔的屬性名和屬性值。這是典型的字典表示形式,也再次表明了 JavaScript里的對(duì)象就是字典結(jié)構(gòu)。不管多么復(fù)雜的對(duì)象,都可以被一句JSON代碼來(lái)創(chuàng)建并賦值。
其實(shí),JSON就是JavaScript對(duì)象最好的序列化形式,它比XML更簡(jiǎn)潔也更省空間。對(duì)象可以作為一個(gè)JSON形式的字符串,在網(wǎng)絡(luò)間自由傳遞和交換信息。而當(dāng)需要將這個(gè)JSON字符串變成一個(gè)JavaScript對(duì)象時(shí),只需要使用eval函數(shù)這個(gè)強(qiáng)大的數(shù)碼轉(zhuǎn)換引擎,就立即能得到一個(gè)JavaScript內(nèi)存對(duì)象。正是由于JSON的這種簡(jiǎn)單樸素的天生麗質(zhì),才使得她在AJAX舞臺(tái)上成為璀璨奪目的明星。
相關(guān)文章
JavaScript使用localStorage判斷設(shè)置值是否過(guò)期
本文主要介紹了JavaScript使用localStorage判斷設(shè)置值是否過(guò)期,通過(guò)設(shè)置過(guò)期時(shí)間,我們可以使用 setItemWithExpiration 函數(shù)將數(shù)據(jù)存儲(chǔ)到 localStorage 中,并使用 getItemWithExpiration 函數(shù)獲取數(shù)據(jù)并檢查是否過(guò)期,感興趣的可以了解一下2023-05-05深入理解JavaScript 中的匿名函數(shù)((function() {})();)與變量的作用域
匿名函數(shù)沒(méi)有實(shí)際名字的函數(shù),匿名函數(shù)(function() {})();是一個(gè)特殊的閉包寫法。本文蛀牙給大家介紹JavaScript 中的匿名函數(shù)((function() {})();)與變量的作用域,需要的朋友可以參考下2018-08-08一篇文章帶你學(xué)會(huì)JavaScript計(jì)時(shí)事件
JS可以實(shí)現(xiàn)很多java代碼不易完成的功能,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章帶你學(xué)會(huì)JavaScript計(jì)時(shí)事件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11javascript 表格內(nèi)容排序 簡(jiǎn)單操作示例代碼
本文為大家詳細(xì)介紹下javascript實(shí)現(xiàn)表格內(nèi)容排序,喜歡的朋友可以參考下2014-01-01在IE上直接編輯網(wǎng)頁(yè)內(nèi)容的js代碼(IE地址欄js)
在IE上直接編輯網(wǎng)頁(yè)內(nèi)容2009-04-04JS實(shí)現(xiàn)的走迷宮小游戲完整實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)的走迷宮小游戲,涉及javascript鍵盤事件響應(yīng)及頁(yè)面元素動(dòng)態(tài)變換相關(guān)操作技巧,需要的朋友可以參考下2017-07-07類似php的js數(shù)組的in_array函數(shù)自定義方法
PHP的數(shù)組函數(shù)in_array()非常方便,下面就為大家介紹下自定義類似php的js數(shù)組的in_array函數(shù),具體實(shí)現(xiàn)方法如下,感興趣的朋友可以參考下2013-12-12