-1

var foo = {}; 
document.body.innerHTML = console.log = location.hash = 'Hi ' + '<br>  ' + foo.bar + '<br>  ' + foo.baz; 

setTimeout(function()
           {
  foo.baz = foo["bar"] = []; 
  foo.bar.push(new Date); 
  foo.baz.push(new Date); 
  document.body.innerHTML = console.log = location.hash = 'Hi ' + '<br>  ' + foo.bar + '<br>  ' + foo.baz}, 
           5000);

4

2 回答 2

1

由于您设置node.bar为等于false(node.foo && node.bar)将评估false属性是否附加。与其检查这些属性是否为 ,不如检查true它们是否未定义:

if (typeof node.foo !== 'undefined' && typeof node.bar !== 'undefined') 
{ 
  ...
} 
else 
{
  ...
}
于 2013-04-27T00:29:23.173 回答
0

看起来它可能依赖于实现:

可能在步骤 1 中创建的对象在上述方法之外是不可访问的。实现可能会选择避免实际创建对象。使用此内部方法的此类实际属性访问可以产生可见效果的唯一情况是它调用访问器函数时。

因此,不要访问属性,而是字符串化并按值传递。

参考

于 2014-03-19T23:57:25.933 回答