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

資訊專(zhuān)欄INFORMATION COLUMN

JS中對(duì)象幾點(diǎn)需要注意的地方

willin / 3463人閱讀

摘要:如何判斷對(duì)象中是否包含一個(gè)屬性刪除對(duì)象中一個(gè)屬性列舉對(duì)象中的屬性和值此方法可以枚舉自己和原型鏈中的內(nèi)容還可以使用對(duì)象的方法,它返回一個(gè)數(shù)組,里面的內(nèi)容就是由所有的對(duì)象的值構(gòu)成的數(shù)組,但是不會(huì)包含原型鏈中的內(nèi)容枚舉如果某個(gè)屬性的的設(shè)定為不可枚

如何判斷對(duì)象中是否包含一個(gè)屬性

    var Person = {
        name : "wenzhe",
        number : 91
    };
    
    // checks for both own properties and prototype properties
    console.log("number" in Person);  // true
    console.log("constructor" in Person);  // true
    
    //  only checks for own properties
    console.log(Person.hasOwnProperty("number"));  // true
    console.log(Person.hasOwnProperty("constructor"));  // false

刪除對(duì)象中一個(gè)屬性

    var Person = {
        name : "wenzhe",
        number : 91
    };
    
    delete Person.name;
    console.log("name" in Person) // false 

列舉對(duì)象中的屬性和值

    var Person = {
        name : "wenzhe",
        number : "00"
    };
    
    for (pro in Person) {
        console.log(pro + " : " + Person[pro]);
    }
    
    // name : wenzhe
    // number : 00
    // 此方法可以枚舉自己和原型鏈中的內(nèi)容
    
    
    
    // 還可以使用對(duì)象的keys方法,它返回一個(gè)數(shù)組,里面的內(nèi)容就是由所有
    // 的對(duì)象的key值構(gòu)成的數(shù)組, 但是不會(huì)包含原型鏈中的內(nèi)容
    
    var properties = Object.keys(Person);
    var i = 0, len = properties.length;
    for (var i = 0, len = properties.length; i < len; i++) {
        console.log(properties[i] + " : " + Person[properties[i]]);
    } 
    
    

枚舉
如果某個(gè)屬性的的設(shè)定為不可枚舉的,那么上面那兩種方法都不能顯示出那個(gè)屬性,但是對(duì)于keys返回的那個(gè)數(shù)組,仍然包含不可被枚舉的那個(gè)值

    //  properties是數(shù)組,每個(gè)數(shù)組都有自己的length屬性
    console.log("length" in properties) // true;
    console.log(Person.propertyIsEnumerable("length"));  // false

Get & Set(accessor properties)

var Person2 = {
    name : "wenze";
    
    get name() {
        console.log("Reading name");
        return this.name;
    }
    
    set name(value) {
        console.log("Setting name");
        this.name = value;
    }
}

Person2.name = "Chen";

在對(duì)象外面為對(duì)象添加屬性的方法

在對(duì)象外面添加一般的屬性(Data Property)--Object.defineProperty

var person = {};
Object.defineProperty(person, "name", {
    value : "wz", // 該屬性的值
    enumerable : true, // 是否可以被枚舉
    configurable : true,  //name可以由Data pro <-> accessor property
    writable : false //  不能在被更改,同類(lèi)型也不行
    })

在對(duì)象外面添加 get&set

var person1 = {name : 1};
Object.defineProperty(person1, "name", {
    get: function() {
        console.log("Reading name");
        return this._name;
    },
    set: function(value) {
        console.log("Setting name to %s", value);
        this._name = value;
    },
    enumerable: true,
    configurable: true
})

添加多個(gè)屬性使用Object.defineProperty

var person1 = {};
Object.defineProperties(person1, {
   _name: {
       value: "Nicholas",
       enumerable: true,
       configurable: true,
       writable: true
    },
    name: {
           get: function() {
               console.log("Reading name");
               return this._name;
           },
           set: function(value) {
               console.log("Setting name to %s", value);
               this._name = value;
           },
           enumerable: true,
           configurable: true
   }
});

查看屬性值的設(shè)置情況

var person1 = {
    name: "WZ"
};
var descriptor = Object.getOwnPropertyDescriptor(person1,       "name");
 
console.log(descriptor.enumerable);
console.log(descriptor.configurable);
console.log(descriptor.writable);
console.log(descriptor.value);
// true
// true
  // true
  // "WZ"

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

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

相關(guān)文章

  • JS總結(jié)篇--[總結(jié)]JS操作DOM常用API詳解

    摘要:文本整理了操作的一些常用的,根據(jù)其作用整理成為創(chuàng)建,修改,查詢(xún)等多種類(lèi)型的,主要用于復(fù)習(xí)基礎(chǔ)知識(shí),加深對(duì)原生的認(rèn)識(shí)。方法主要是用于添加大量節(jié)點(diǎn)到文檔中時(shí)會(huì)使用到。 文本整理了javascript操作DOM的一些常用的api,根據(jù)其作用整理成為創(chuàng)建,修改,查詢(xún)等多種類(lèi)型的api,主要用于復(fù)習(xí)基礎(chǔ)知識(shí),加深對(duì)原生js的認(rèn)識(shí)。 基本概念 在講解操作DOM的api之前,首先我們來(lái)復(fù)習(xí)一下一些基...

    malakashi 評(píng)論0 收藏0
  • 《編寫(xiě)可維護(hù) JavaScript》讀書(shū)筆記

    摘要:最近閱讀了編寫(xiě)可維護(hù)的,在這里記錄一下讀書(shū)筆記。禁止使用,,,的字符串形式。避免使用級(jí)事件處理函數(shù)。讓事件處理程序成為接觸到對(duì)象的唯一函數(shù)。檢測(cè)函數(shù)是檢測(cè)檢測(cè)函數(shù)的最佳選擇。為特定瀏覽器的特性進(jìn)行測(cè)試,并僅當(dāng)特性存在時(shí)即可應(yīng)用特性檢測(cè)。 最近閱讀了《編寫(xiě)可維護(hù)的 JavaScript》,在這里記錄一下讀書(shū)筆記。書(shū)中主要基于三個(gè)方向來(lái)講解怎么增加代碼的可維護(hù)性:編程風(fēng)格、編程實(shí)踐、自動(dòng)化...

    tuniutech 評(píng)論0 收藏0
  • 一篇包含了react所有基本點(diǎn)文章

    摘要:今年我要挑戰(zhàn)自己,把它歸納為一篇文章。將忽略該函數(shù)并呈現(xiàn)常規(guī)的空按鈕。這是中唯一的約束只有表達(dá)式。將,,和視為沒(méi)有呈現(xiàn)任何內(nèi)容的有效元素子元素。使用自己的對(duì)象將事件對(duì)象包裝起來(lái),以?xún)?yōu)化事件處理的性能。任何已掛載元件的狀態(tài)可能會(huì)改變。 去年,我寫(xiě)了一本關(guān)于學(xué)習(xí)React.js的小書(shū),原來(lái)是大約100頁(yè)。 今年我要挑戰(zhàn)自己,把它歸納為一篇文章。 本文不會(huì)涵蓋什么是React,或者為什么要學(xué)...

    Chiclaim 評(píng)論0 收藏0
  • js設(shè)計(jì)模式(一)-單例模式

    摘要:雖然是弱類(lèi)型的語(yǔ)言,但是也有構(gòu)造函數(shù)和實(shí)例。也就是說(shuō),我們只在第一次調(diào)用構(gòu)造函數(shù)時(shí)創(chuàng)建新對(duì)象,之后調(diào)用返回時(shí)返回該對(duì)象即可。而我不認(rèn)為這是一個(gè)單例模式的原因如下我覺(jué)得既然兩次調(diào)用同一個(gè)構(gòu)造函數(shù),返回的不是同一個(gè)對(duì)象,那不就不能成為單例模式。 寫(xiě)在前面 (度過(guò)一陣的繁忙期,又可以愉快的開(kāi)始學(xué)習(xí)新知識(shí)了,一年來(lái)技術(shù)棧切來(lái)切去,卻總覺(jué)得js都還沒(méi)學(xué)完-_-) 本文主要圍繞js的設(shè)計(jì)模式進(jìn)行展...

    AlexTuan 評(píng)論0 收藏0
  • Vert.x入坑須知(1)

    摘要:輕量級(jí),部署簡(jiǎn)單。此外,本文也不是入門(mén)文檔,而是為了預(yù)防陷坑而給出的指導(dǎo)意見(jiàn),故在閱讀本文之前還請(qǐng)先仔細(xì)閱讀的文檔。可視作的一個(gè)最小部署和運(yùn)行單元,簡(jiǎn)單的說(shuō),可類(lèi)比為。,主,負(fù)責(zé)部署程序中其他的。嚴(yán)格來(lái)講,之后,上述第一點(diǎn)并不完全正確。 一直以來(lái)早有將這些年用Vert.x的經(jīng)驗(yàn)整理一下的想法,奈何天生不是勤快人,直到最近扶墻老師問(wèn)起,遂成此文。 選擇理由 現(xiàn)在想想,我們應(yīng)該算是國(guó)內(nèi)用V...

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

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

0條評(píng)論

閱讀需要支付1元查看
<