摘要:如何判斷對(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
摘要:文本整理了操作的一些常用的,根據(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í)一下一些基...
摘要:最近閱讀了編寫(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)化...
摘要:今年我要挑戰(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é)...
摘要:雖然是弱類(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)行展...
摘要:輕量級(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...
閱讀 1998·2021-11-24 09:39
閱讀 992·2021-11-11 16:55
閱讀 1449·2021-10-09 09:43
閱讀 1434·2021-10-08 10:17
閱讀 1668·2021-08-25 09:41
閱讀 439·2019-08-30 13:02
閱讀 641·2019-08-29 15:14
閱讀 1017·2019-08-29 13:53