Let's say we have the following code: ``` class Person { constructor(fName, lName) { this.firstName = fName; this.lastName = lName; }
logFullName() { console.log(this.firstName, this.lastName); } } var people = new Proxy([new Person('Edwin', 'Reynoso'), new Person('That', 'Guy')], { get(target, property) { if(target[property]) return target[property]; var arr = []; for(var person of target) arr.push(person[property]); return arr; } }); people.firstName // returns ["Edwin", "That"] people.lastName // returns ["Reynoso", "Guy"] people.logFullName // returns [Person.prototype.logFullName, Person.prototype.logFullName] people.forEach // returns forEach meaning any property of the acutal array is returned ``` I can't call logFullName unless it was a function of the target which is not (and not what I want bc I'll have to do that for every method) Also I want the function to be called on each element if it could be called on it, if not return `undefined` So how about a call trap: ``` var people = new Proxy([new Person('Edwin', 'Reynoso'), new Person('That', 'Guy')], { call(target, functionName, arguments) { // target would be the array // functionName the name of the function // arguments the arguments passed in as an array } }); ``` If the target has a method the `handler.get` of the proxy above would return that method and therefore you can call it. But what if no such method exist __nosuchmethod__ would be the property yet how would we get the arguments? Another thing that could possibly done is whenever the property is __nosuchmethod__ pass another argument which would be the actual arguments **Or does someone know how to do what I'm trying to accomplish**
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss