1. 程式人生 > >js屬性物件的propertyIsEnumerable方法

js屬性物件的propertyIsEnumerable方法

定義

每個物件都有一個propertyIsEnumerable()方法。此方法返回一個布林值,表明指定的屬性是否是可列舉。

This method can determine whether the specified property in an object can be enumerated by a for...in loop, with the exception of properties inherited through the prototype chain. (來源MDN)

翻譯:

此方法可以確定物件中的指定屬性是否可以由for ... in迴圈列舉,但通過原型鏈繼承的屬性除外。

我理解的意思,不知道對不對:
此方法,可以確定物件中的指定屬性(除了通過原型鏈繼承的屬性)是否可以由for...in迴圈列舉。
也就是說:
for...in迴圈出來的屬性,除了通過原型鏈繼承的屬性不是可列舉,其他都是可列舉屬性。

用法舉例

使用方法obj.propertyIsEnumerable(prop)來判斷是否可列舉。

const obj = {};
const arr = [];
obj.name= 'weiqinl';
arr[0] = 2018;
console.log(obj.propertyIsEnumerable('name'));  // true
console.log(arr.propertyIsEnumerable(0)); // true
console.log(arr.propertyIsEnumerable('length')); // false

找出物件的可列舉屬性

function Person(name,age) {
    this.name = name
    this.age = age
    this.say = function() {
        console.log('say hi')
    }
}
Person.prototype.where = 'beijing' // 在原型鏈上新增屬性
var p = new Person('weiqinl', 18)  // 例項化一個物件
p.time = '2018'    // 在例項上新增屬性
let arr = []
for(let i in p) {
    console.log(i, p.propertyIsEnumerable(i))
    p.propertyIsEnumerable(i)? arr.push(i) : ''
}
console.log(arr)
// name true
// age true
// say true
// time true
// where false
// (4) ["name", "age", "say", "time"]

瀏覽器的window物件的可列舉屬性

window物件的可列舉屬性到底有多少個呢?

var arr = []
for(let i in window) {
    if(window.propertyIsEnumerable(i)) {
        arr.push(i)
    }
}
console.log(arr.length) 

這個長度,在每個網站的值都是不一樣的,因為他們會各自往window上新增全域性屬性。我看到最少的可列舉屬性值個數為195

與hasOwnProperty的區別

  1. propertyIsEnumberable()方法,可以確定物件中的指定屬性(除了通過原型鏈繼承的屬性)是否可以由for...in迴圈列舉。
    [完]

相關推薦

js屬性物件propertyIsEnumerable方法

定義 每個物件都有一個propertyIsEnumerable()方法。此方法返回一個布林值,表明指定的屬性是否是可列舉。 This method can determine whether the specified property in an object can be enumerated by a

js屬性物件的hasOwnProperty方法

Object的hasOwnProperty()方法返回一個布林值,判斷物件是否包含特定的自身(非繼承)屬性。 判斷自身屬性是否存在 var o = new Object(); o.prop = 'exists'; function changeO() { o.newprop = o.prop; d

js clone物件方法

方法一: function clone(obj){ var o; if(typeof obj == "object"){ if(obj === null){ o = null; }else{

js:Array物件常用方法介紹

前言 在js中,陣列作為一個特殊的物件。是我們常用的資料格式。今天就來梳理一下常用的陣列方法. 1.基礎 幾種基礎的就簡單介紹一下:建立陣列 var arr1 = new Array(); //括號可以傳參,指定陣列長度。目前arr1.length是0 var arr2 = new Array(3)

js--document物件以及方法

document物件 document物件的方法:     write():向html文件中輸入指定的物件。     writeln():向html文件中寫入資料並換行。     open():開啟文件以收集write或者writeln的輸出。     close():關閉

js獲取物件屬性的兩種方法,object.屬性名,[‘屬性名’ ]

1、通過點的方式 2、通過括號的方式 例: <input type="text" value="hello" id="text"/> var oText = document.getElementById("text") (1)通過點的方式   oText.pr

js中Object物件常用方法屬性

1、屬性 Object.prototype.writable:預設為false Object.prototype.enumerable:預設為false Object.prototype.configurable:預設為false Object.prototype.constructor:用

js判斷物件屬性是否存在的方法

判斷物件中是否有某屬性的常見方式總結,不同的場景要使用不同的方式。 一、點( . )或者方括號( [ ] )   通過點或者方括號可以獲取物件的屬性值,如果物件上不存在該屬性,則會返回undefined。當然,這裡的“不存在”指的是物件自身和原型鏈上都不存在,如果原型鏈有

js刪除物件屬性及封裝方法

javascript中可以通過delete刪除物件的屬性: 使用方法如下:var obj={}; obj.pro="del"; delete obj.pro; //或者 delete obj[pro] //該操作具有返回值 刪除成功為true失敗為false為了便於使用封裝成

JS 輸出物件屬性以及方法[轉載]

<script>var obj  = {attribute:1,method:function() {alert("我是函式");}}for (var i in obj){alert(i);            // 輸出屬性名:  attribute,methodalert(obj[i])  

JS宣告物件屬性名加引號與不加引號的問題及解決方法

一般情況下屬性名加引號和不加引號是都可以的,效果是一樣的。 var obj = { name : '你好', 'age' : 1, }; document.write( obj['name'] + '<br />' ); document.write(

js入門·物件屬性方法大總結

陣列(Array):系列元素的有序集合; 屬性: length:用於獲取陣列元素的個數,既最大下標加 1 方法: sort(function):在未指定排序號的情況下,按照元素的字母順序排列,如果不是字串型別則轉換成字串,在排序; reverse():顛倒陣列中元素的順序

熟悉 js window 物件屬性方法

熟練window物件的open、close、alert、confirm、prompt、setTimeout、clearTimeout、setInterval、clearInterval、moveBy、resizeBy、scrollBy方法的使用掌握window物件的moveTo、resizeTo、scroll

js獲取物件屬性方法總結

1.訪問物件的屬性 屬性是與物件相關的值。 訪問物件屬性的語法是: objectName.propertyName 這個例子使用了 String 物件的 length 屬性來獲得字串的長度: var message="Hello World!"; var x=mes

js 建立物件的三種方式 及獲取屬性新增屬性方法

1:直接量法 var obj = { } ;//這是一個空物件 var point = {x:0,y=0}; //point物件有兩個屬性 x 和 y 2.通過new 建立物件 var

JS對象的方法定義了一個函數,並作為對象的屬性存儲。

isp bubuko .com display relative 對象方法 輸出 meta margin 案例:<!DOCTYPE html><html><head><meta charset="utf-8"><titl

javascript 定義物件方法屬性的使用方法(prototype)

prototype 定義和用法 prototype 屬性使您有能力向物件新增屬性和方法。 語法 object.prototype = { 函式名 : function(){} } object.prototype.name=value javaSc

js--獲取/賦值文字值innerText/textContent、innerHTML的區別,獲取表單的值;js事件物件屬性target於currentTarget

  <body> <div id="box_text"> <p style="color:hotpink;">muzidigbig</p> <p style="color:pink">

JS Array物件方法

方法 描述 concat() 連線兩個或更多的陣列,並返回結果。 join() 把陣列的所有元素放入一個字串。元素通過指定的分隔符進行分隔。 pop() 刪除

JS面向物件物件屬性屬性

ECMAScript的定義中,物件的屬性有兩種,一種是資料屬性,另一種是訪問器屬性 我們知道JS中有基本資料型別和物件,物件中的屬性也無外乎是這些型別,可是作為物件的屬性,這些屬性本身卻也多了一些特殊的屬性,而且屬性種類的不同也會使屬性的屬性有些許的差別。下面就來聊聊物件屬性的兩種類別。