私はこれを行いました(バージョン mootools-core-1.4.5.js を使用)
Object.prototype.walkRecursive = function(callable, bindable) {
var p, val, retVal, _bind;
_bind = (typeof bindable === 'object') ? bindable : this;
for (p in this) {
if (this.hasOwnProperty(p)) {
if (!(this[p] instanceof Object)) {
if (typeof callable === 'function')
{
retVal = callable.call(_bind, p, this[p]);
if (typeof retVal !== 'undefined')
{
this[p] = retVal;
}
}
else {
throw "Podaj funkcje jako drugi argument";
}
} else if (this[p] instanceof Object) {
this[p].walkRecursive(callable, bindable);
}
}
}
return this;
};
それで
var navigationEl = new Element('div', {
'class' : 'wcag-navigation'
}).inject(this._element);
this._wcagButton.pausePlay HTML 要素が Chrome デベロッパー ツールでどのように見えるかを確認すると、次のようになりました。
Mootools のimplementを使用すると、同じことが起こります。
Object.implement({walkRecursive :function(callable, bindable) {....}.protect()});
どうして?この問題に対処する方法を教えてください
使用例
var data = [
{
id: 0,
name: 'Template 0',
subComponents: [
{id: 1, name: 'Template 1', subItems:[
{id: 2, name: 'Template 2', subComponents:[
{id: 3, name: 'Template 3'}
],
subItems: [
{id: 4, name: 'Template 4',},
{id: '42'}
]
}
]}
]}
];
var bindMe = {
nothing:'special'
}
data.walkRecursive(function(key,value){
if(key === 'name')
{
return value+' '+this.nothing;
}
},bindMe)