鉴于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
等。
答案 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 function
是Object
,但关键(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();
的实例