成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

細(xì)說 Javascript 對(duì)象篇(一) : 對(duì)象的使用和屬性

codecook / 2667人閱讀

摘要:中的一切都可以視為對(duì)象,除了兩個(gè)特例和。上例中的第三個(gè)情形已說明刪除對(duì)象的屬性刪除屬性的唯一方法是使用,將屬性值設(shè)置為或只是移除了與屬性相關(guān)的值,并沒有真正刪除屬性本身。命名對(duì)象的屬性對(duì)象的屬性可以用普通字符或字符串來命名。

Javascript 中的一切都可以視為對(duì)象,除了兩個(gè)特例:nullundefined。

false.toString(); // "false"
[1, 2, 3].toString(); // "1,2,3"

function Foo(){}
Foo.bar = 1;
Foo.bar; // 1

一個(gè)經(jīng)常容易被誤解的就是數(shù)字常量不能視為對(duì)象,實(shí)際上數(shù)字常量仍然可以視為對(duì)象。這是因?yàn)?Javascript 解析器在解析點(diǎn)操作符時(shí)而將其視為浮點(diǎn)數(shù)特征而犯下的錯(cuò)誤。

2.toString(); // raises SyntaxError

實(shí)際上,我們有很多方法可以使得數(shù)字常量表現(xiàn)為一個(gè)對(duì)象。

2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first
對(duì)象作為數(shù)據(jù)類型

Javascript 中的對(duì)象可以當(dāng)做哈希表使用,它們主要包含鍵與值的對(duì)應(yīng)關(guān)系。
使用 {} 符號(hào)來創(chuàng)建一個(gè)簡單的對(duì)象,這個(gè)新建的對(duì)象將從 Object.prototype 繼承而來,并且不包含自己定義的屬性。

var foo = {}; // a new empty object

// a new object with a "test" property with value 12
var bar = {test: 12}; 
訪問對(duì)象的屬性

我們可以使用兩種方式來訪問 Javascript 的對(duì)象,分別是點(diǎn)操作符 . 和中括號(hào)操作符 []

var foo = {name: "kitten"}
foo.name; // kitten
foo["name"]; // kitten

var get = "name";
foo[get]; // kitten

foo.1234; // SyntaxError
foo["1234"]; // works

兩種操作符的效果幾乎一樣,唯一的不同是中括號(hào)操作符允許動(dòng)態(tài)設(shè)置屬性而且屬性名可以有語法錯(cuò)誤。(上例中的第三個(gè)情形已說明)

刪除對(duì)象的屬性

刪除屬性的唯一方法是使用 delete,將屬性值設(shè)置為 undefinednull 只是移除了與屬性相關(guān)的值,并沒有真正刪除屬性本身。

var obj = {
    bar: 1,
    foo: 2,
    baz: 3
};
obj.bar = undefined;
obj.foo = null;
delete obj.baz;

for(var i in obj) {
    if (obj.hasOwnProperty(i)) {
        console.log(i, "" + obj[i]);
    }
}

上面的輸出 bar undefinedfoo null,只有 baz 真正被刪除。
這里要說明一點(diǎn),delete 只能刪除屬性,并不能刪除變量。所以我們在定義變量時(shí)一定要養(yǎng)成寫 var 的好習(xí)慣,任何時(shí)候,變量一定要使用 var 關(guān)鍵字才能聲明。因?yàn)槿绻粚?var,變量會(huì)被誤認(rèn)給全局對(duì)象創(chuàng)建了一個(gè)新屬性。

這個(gè)例子相當(dāng)清楚給出了答案,a 為變量,而 b 只是一個(gè)全局對(duì)象的屬性而已。

命名對(duì)象的屬性
var test = {
    "case": "I am a keyword, so I must be notated as a string",
    delete: "I am a keyword, so me too" // raises SyntaxError
};

對(duì)象的屬性可以用普通字符或字符串來命名。同樣也是由于 Javascript 解析器的一個(gè)錯(cuò)誤設(shè)計(jì),上例中的第二種表示方法在 ECMAScript 5 中將會(huì)拋出一個(gè)錯(cuò)誤。
錯(cuò)誤的原因是因?yàn)?delete 是一個(gè)關(guān)鍵詞,所以必須使用一個(gè)字符串常量來命名來適應(yīng)老版的 Javascript 解析器。

參考

http://bonsaiden.github.io/JavaScript-Garden/#object.general

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78055.html

相關(guān)文章

  • 細(xì)說 Javascript 函數(shù)(四) : ?arguments 對(duì)象

    因?yàn)樽罱胁┯逊答佄业牟┪氖侵苯臃g的參考鏈接內(nèi)的內(nèi)容,所以我在這里要說明一下,以免引起不必要的誤會(huì)。 首先,我很喜歡 segmentfault 的交流和學(xué)習(xí)的氛圍,所以我很愿意在這里跟各位 SFer 交流學(xué)習(xí)心得,相互學(xué)習(xí),共同進(jìn)步。 第二,我做技術(shù)方面的工作不久,所以學(xué)習(xí)經(jīng)歷也不是很長,但是我發(fā)現(xiàn)寫博客,總結(jié)自己的學(xué)習(xí)心得是個(gè)很好的學(xué)習(xí)習(xí)慣,至少對(duì)于我個(gè)人而言,我于此收益頗豐,所以我決定堅(jiān)持一...

    aristark 評(píng)論0 收藏0
  • 細(xì)說 Javascript 函數(shù)(二) : this 工作機(jī)制

    摘要:與其他編程語言相比,對(duì)的使用是一套完全不同的機(jī)制。在五種情況下的值是各有不同的。調(diào)用一個(gè)函數(shù)時(shí)在這里,同樣指向全局對(duì)象。此時(shí)在函數(shù)內(nèi),指向新建的對(duì)象。盡管,晚綁定初看上去是個(gè)不好的決定,但實(shí)際上這是原型式繼承工作的基礎(chǔ)。 與其他編程語言相比,Javascript 對(duì) this 的使用是一套完全不同的機(jī)制。this 在五種情況下的值是各有不同的。 全局作用域下 this; 當(dāng)在全...

    ZoomQuiet 評(píng)論0 收藏0
  • 細(xì)說 Javascript 對(duì)象(二) : 原型對(duì)象

    摘要:并沒有類繼承模型,而是使用原型對(duì)象進(jìn)行原型式繼承。我們舉例說明原型鏈查找機(jī)制當(dāng)訪問一個(gè)對(duì)象的屬性時(shí),會(huì)從對(duì)象本身開始往上遍歷整個(gè)原型鏈,直到找到對(duì)應(yīng)屬性為止。原始類型有以下五種型。此外,試圖查找一個(gè)不存在屬性時(shí)將會(huì)遍歷整個(gè)原型鏈。 Javascript 并沒有類繼承模型,而是使用原型對(duì)象 prototype 進(jìn)行原型式繼承。 盡管人們經(jīng)常將此看做是 Javascript 的一個(gè)缺點(diǎn),然...

    lansheng228 評(píng)論0 收藏0
  • 細(xì)說 Javascript 對(duì)象(四) : for in 循環(huán)

    摘要:第二是,由于會(huì)遍歷整個(gè)原型鏈,所以當(dāng)原型鏈過長時(shí),會(huì)對(duì)性能造成影響??偨Y(jié)建議養(yǎng)成過濾屬性的好習(xí)慣,不要對(duì)運(yùn)行環(huán)境做任何假設(shè),也無論原生的原型對(duì)象是否被擴(kuò)展。 如同 in 運(yùn)算符一樣,使用 for in 循環(huán)遍歷對(duì)象屬性時(shí),也將往上遍歷整個(gè)原型鏈。 // Poisoning Object.prototype Object.prototype.bar = 1; var foo = {m...

    Kross 評(píng)論0 收藏0
  • 細(xì)說 Javascript 對(duì)象(三) : hasOwnProperty

    摘要:方法是中唯一一個(gè)處理對(duì)象屬性而不會(huì)往上遍歷原型鏈的。在這里,只有能給出正確答案,這在遍歷一個(gè)對(duì)象的屬性時(shí)是非常必要的。這里還要提醒下,當(dāng)我們使用來遍歷對(duì)象時(shí),使用將會(huì)很好地避免來自原型對(duì)象擴(kuò)展所帶來的困擾。 判斷一個(gè)屬性是定義在對(duì)象本身而不是繼承自原型鏈,我們需要使用從 Object.prototype 繼承而來的 hasOwnProperty 方法。hasOwnProperty 方法...

    elva 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<