XML
オブジェクトのプロパティへの代入var a = <a/>;
a.b = 'foo';
// <a>
// <b>foo</b>
// </a>
XML
オブジェクトの [[Put]]
内部メソッドvar a = <a/>;
a.b.c.d.e = 'foo';
// <a>
// <b>
// <c>
// <d>
// <e>foo</e>
// </d>
// </c>
// </b>
// </a>
XMLList
オブジェクトの [[ResolveValue]]
内部メソッドXMLList
の [[ResolveValue]]
var a = <a/>;
var list = a.b;
list
は空の XMLList
オブジェクト
[[TargetObject]]
内部プロパティ (値は a
)[[TargetProperty]]
内部プロパティ (値は "b"
)[[ResolveValue]]
内部メソッドは、
a.[[Put]]("b", "")
した後に a.[[Get]]("b")
し、その結果を返す……こともあるPerl
my $a;
$a->{b}->[0]->{c} = "foo";
say Dumper $a;
# $VAR1 = {
# 'b' => [
# {
# 'c' => 'foo'
# }
# ]
# };
autovivification!
- vivify
- 【他動】 活気づける、生き生きさせる
- vivification
- 【名】 生命を与えること、蘇生、復活
prefs
の取得・設定var data = { 'foo.bar.baz': 42 };
var Prefs = <prefs/>;
XML.prototype.function::get = function () {
this._ = '';
var branches = [];
for (var branch = this;
branch !== Prefs;
branch = branch.parent()) {
branches.push(branch.name());
}
var key = branches.reverse().join('.');
return data[key];
};
XML.prototype.function::set = function (value) {
this._ = '';
var branches = [];
for (var branch = this;
branch !== Prefs;
branch = branch.parent()) {
branches.push(branch.name());
}
var key = branches.reverse().join('.');
data[key] = value;
};
Prefs.foo.bar.baz.get(); // => 42
Prefs.foo.bar.baz.qux.set('Hello, E4X world!');
// data => {
// 'foo.bar.baz': 42,
// 'foo.bar.baz.qux': 'Hello, E4X world!',
// }