[更新]
给定对象:
var node = {
'comments': 'http://example.com/post/#comments',
'slash:comments': '143',
}
可以访问'标题'使用索引访问或点表示法的参数:
node["comments"] // 'http://example.com/post/#comments'
node.comments // 'http://example.com/post/#comments'
但是使用namespaced属性,只有索引访问可用:
node["slash:comments"] // '143'
node.slash:comments // javascript syntax error
javascript中有没有办法使用点表示法访问命名空间属性?
使用关联数组访问时,属性键可以是任何字符串值,但使用点表示法时仅限于变量名称语法,这似乎是不合适的 - 是否有W3C规范定义此内容?
[更新]
为何选择@Bergi?上面的对象是由XML到JSON库为以下XML(RSS2.0提要格式)生成的对象的一部分:
<slash:comments>143</slash:comments>
<comments>http://example.com/post/#comments</comments>
另一个库生成此对象,其中所有属性都可以通过点表示法访问。
'comments': [
'http://example.com/post/#comments',
{
'__prefix': 'slash',
'__text': '143'
}
]
有没有人知道是否有努力将XML转换为JSON标准化?什么是最广泛使用或可接受的库?
答案 0 :(得分:0)
确实,你必须遵循JS点符号格式。在你的情况下:
var node = {
'comments': 'http://example.com/post/#comments',
'slash':{
comments': '143'
}
}
console.log(node.slash.comments);
的文件
答案 1 :(得分:0)
没有。您使用此表示法称为命名空间属性是什么,使用class User {
var $name;
}
class UserRepository {
private $type;
public function __construct($Class) {
^^^^^^ this will be a string
$this->type = $Class;
}
public function getInstance() {
return new $this->type;
}
}
$obj = new UserRepository('User');
^^^^^^ send a string here
var_dump($obj->getInstance());
,它仍然只是一个字符串。由于:
是JS上的特殊字符,因此您无法使用点表示法执行此操作。如果您使用:
代替_
来定义命名空间,则可以执行此操作。