На самом деле я собирался ответить на свой вопрос сам, но я был слишком медленным, и другие ответили на него первыми (и к тому же добавили очень полезную информацию). Тем не менее, вот ответ, который я хотел написать, на случай, если это может кому-то помочь:
Похоже, что ловушка getOwnPropertyDescriptor
срабатывает при вызове hasOwnProperty
. Таким образом, вы можете поймать hasOwnProperty
, выполнив следующие действия:
getOwnPropertyDescriptor(target, name) {
return {
value : target[name],
//use a logical set of descriptors:
enumerable : true,
configurable : true,
writable : true
};
}
Другая часть также захватывает get
и ownKeys
:
get(target, name) {
return {}; //replace this with a relevant object
}
//These will be iterated over as part of the for loop
ownKeys() {
return ["RelevantProperty1", "RelevantProperty2"];
}
В общем, поскольку вы должны вернуть массив свойств при перехвате ownKeys
, использование прокси, похоже, не делает ситуацию намного лучше в этом случае использования. Я думаю, что в большинстве ситуаций следующее будет работать так же хорошо и будет менее хрупким:
let obj = {};
let keys = ["a" , "b"];
for (let key of keys) {
obj[key] = {}; //relevant object
}
Поэтому использование прокси может быть излишним.
person
GregRos
schedule
06.11.2016