Object.assign
이 내 개체에 대해 호출되는지 확인하려고하고 있는데 위조 된 경우 개체에 대한 추가 작업을 수행합니다. 어떻게해야합니까? 내 코드는 다음과 같습니다.JS에 내장 된 메서드가 호출되었는지 확인
if (Object.assign) {... }
Object.assign
이 내 개체에 대해 호출되는지 확인하려고하고 있는데 위조 된 경우 개체에 대한 추가 작업을 수행합니다. 어떻게해야합니까? 내 코드는 다음과 같습니다.JS에 내장 된 메서드가 호출되었는지 확인
if (Object.assign) {... }
Object.assign은 속성을 개체에 복사합니다. 속성이 설정되어 있는지 확인하려면 Proxy을 사용할 수 있습니다. 개체에 대해서만 Object.assign
이 작동하지 않도록 할 수는 없습니다. 다음 중 하나를 수행 할 수 있습니다 :
Object.assign
때문에이 설정되지 않는 속성을 (좋은 생각) (당신이 원하는 무엇을 어쩌면 가까운) 당신의 obectlet validator = {
set: function(obj, prop, value) {
console.log('an attempt to set values has been made', obj, prop, value);
// The default behavior to store the value
obj[prop] = value;
return true;
}
};
let person = new Proxy({}, validator);
Object.assign(person, {a: 2});
나는 object.assign t 중지하려면 오 오브젝트 여기
에 호출되는 정말하지 않는 것이 좋습니다 해킹 코드를,`(Object.assign)`항상 평가합니다 경우 수 없습니다
var objectThatCannotBeObjectAssigned = {a:1};
var oldAssign = Object.assign;
Object.assign = function(target) {
if (target === objectThatCannotBeObjectAssigned) {
return target;
}
return oldAssign.apply(this, arguments);
}
console.log(Object.assign(objectThatCannotBeObjectAssigned, {a: 2}));
console.log(Object.assign({a:1}, {a: 2}));
기존 값만 검사하는 함수/메소드를 가로 채고 싶다면 어떻게 대신 할 수 있습니까? –
@ EvenAndréStensberg 질문에 더 많은 코드가 필요하며 끝이 너무 열려 있고 솔직하게 질문을하는 것이 좋습니다. 작업하려는 코드를 정확히 보여주는 질문을하십시오. –
그냥 다른 각도에서 그것을 얻으려고. 내가 반성하면 말해라. 키스, 내가 그걸 부르는 것을 어떻게 막을 수 있니? –
왜냐하면'Object.assign'은 호출되지 않는 함수이기 때문입니다. –
개체에 대한 속성이 수정되었는지 확인하려면 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy를 사용하고 'set'작업을 트랩해야합니다 –
코드는 메소드가 있는지를 확인합니다 * (또는 적어도 속성에 truey 값이있는 경우) *. * "... 내 물건에 대한 호출"*이라는 의미가 확실하지 않습니다. –