Edwin Reynoso (2015-06-09T05:58:29.000Z)
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**
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150609/b86d1546/attachment-0001.html>
eorroe at gmail.com (2015-06-11T12:17:34.615Z)
Let's say we have the following code:

```JS
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:

```JS
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**