Sure, but the problem (as people keep pointing out) has two solutions: close the scope in which filfter binds to a private name, or use a renaming private declaration. It's not perfect but there's no absolute inability to call public filter and private filter.

Adding "filter" to the Object property was done to have a fallback when the object you work on don't have a "filter" method built-in. In case the object you're working on has a "filter" method, it should be used. In this case, if you use private name, you can't have this behavior right (ie: write "myObj.filter()" and use the filter method implemented in myObj, if any, or the temporary extension to Object.prototype). It's because your intent was not to create a private name. It was to define a temporary extension to an object.

If you want this behavior right using private names, you'll need "if(myObj["filter"]) { myObj["filter"]() } else { myObj.filter(); }" or "(myObj["filter"]||myObj.filter).call(myObj)" which is really ugly.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to