Tuesday, 24 October 2017
How do I enumerate the properties of a JavaScript object?
Answer
Answer
How do I enumerate the
properties of a JavaScript object?
I
actually want to list all the defined variables and their values, but I've learned that
defining a variable actually creates a property of the window
object.
Answer
Simple
enough:
for(var propertyName in
myObject) {
// propertyName is what you want
// you can get the
value like this:
myObject[propertyName]
}
Now,
you will not get private variables this way because they are not
available.
/>
EDIT: href="https://stackoverflow.com/questions/85992/how-do-i-enumerate-the-properties-of-a-javascript-object#86306">@bitwiseplatypus
is correct that unless you use the hasOwnProperty()
method, you
will get properties that are inherited - however, I don't know why anyone familiar with
object-oriented programming would expect anything less! Typically, someone that brings
this up has been subjected to Douglas Crockford's warnings about this, which still
confuse me a bit. Again, inheritance is a normal part of OO languages and is therefore
part of JavaScript, notwithstanding it being
prototypical.
Now, that said,
hasOwnProperty()
is useful for filtering,
but we don't need to sound a warning as if there is something dangerous in getting
inherited properties.
EDIT 2: href="https://stackoverflow.com/questions/85992/how-do-i-enumerate-the-properties-of-a-javascript-object#86306">@bitwiseplatypus
brings up the situation that would occur should someone add properties/methods to your
objects at a point in time later than when you originally wrote your objects (via its
prototype) - while it is true that this might cause unexpected behavior, I personally
don't see that as my problem entirely. Just a matter of opinion. Besides, what if I
design things in such a way that I use prototypes during the construction of my objects
and yet have code that iterates over the properties of the object and I want all
inherited properties? I wouldn't use hasOwnProperty()
. Then,
let's say, someone adds new properties later. Is that my fault if things behave badly at
that point? I don't think so. I think this is why jQuery, as an example, has specified
ways of extending how it works (via jQuery.extend
and
jQuery.fn.extend
).
php - file_get_contents shows unexpected output while reading a file
I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print ...
-
I have an app which needs a login and a registration with SQLite. I have the database and a user can login and register. But i would like th...
-
I would like to split a String by comma ',' and remove whitespace from the beginning and end of each split. For example, if I have ...
-
I got an error in my Java program. I think this happens because of the constructor is not intialized properly. My Base class Program public ...
No comments:
Post a Comment