什么Javascript类型可以具有属性?

时间:2011-03-16 14:54:37

标签: javascript

鉴于var x,确定x是否具有属性的最佳方法是什么?我可以做吗

  

if(x instanceof Object)

这是否足以确保x可以拥有属性或者我是否需要检查其他内容?我知道原始人不能拥有属性,但还有其他什么吗?我一直在检查各种类型:

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

等。

2 个答案:

答案 0 :(得分:3)

是的,这就足够了。注意:String也可以接受您未检查的属性:

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

但是自String instanceof Object == true以来你应该没事。

为了好玩,试试这个(它起作用,因为/x/ instanceof Object == true):

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

另一个注意事项:您的instanceof检查会发现这一点,但我希望您注意,虽然正常情况下javascript functionObject,但关键(function() { })()是不是必然 Object,但可能取决于它返回的值。

希望有所帮助。

-tjw

答案 1 :(得分:-1)

您需要首先创建一个JavaScript对象:

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

Vars a和b只是普通的变量。 var foo = {};位类似于名为foo的内置对象,您创建了一个类似var bar = new foo();的实例