What types of Javascript can have properties?

Specified by var x, what is the best way to determine if x can have properties? Can i just do

if (x instanceof Object)

Is that enough to make sure x can have properties, or do I need to check something else? I know that primitives cannot have properties, but is there anything else? I passed the test of various types:

var a = false;
a.foo = "bar";
console.log(a["foo"]);
// Logs undefined

var b = "b";
b.foo = "bar";
console.log(b["foo"]);
// Logs undefined

var c = new Array(1,2,3);
c.foo = "bar";
console.log(c["foo"]);
// Logs bar

var d = new Object();
d.foo = "bar";
console.log(d["foo"]);
// Logs bar

var e = new RegExp("");
e.foo = "foo";
console.log(e["bar"]);
// Logs bar

var f = new Number(1);
f.foo = "bar";
console.log(f["foo"]);
// Logs bar

var g = function(){};
g.foo = "bar";
console.log(g["foo"]);
// Logs bar

etc..

+3
source share
2 answers

Yes, that’s enough. Note: Stringmay also accept properties that you do not check:

var a = new String("hello");
a.foo = "bar";

But since String instanceof Object == trueyou should be fine.

For fun, try this (it works since /x/ instanceof Object == true):

var x = /hello/;
x.foo = "bar";

: instanceof , , , , javascript function Object, (function() { })() Object, .

, .

-tjw

+3

JavaScript :

<script>
var foo = {};
foo.bar = 'test';
console.log(foo.bar);
</script>

Vars a b - ole. var foo = {}; foo, var bar = new foo();

-1

All Articles