IE에서 창 속성 삭제
이 문제에 대한 정보를 찾을 수 없습니다. IE에서 다음 코드가 작동하지 않는 이유는 무엇입니까?
window.x = 45;
delete window.x;
// or delete window['x'];
IE는 "개체가이 작업을 지원하지 않습니다"오류를보고합니다. IE 문제에서 창 속성을 반복하는 것과 관련이 있습니까?
나는 이렇게 할 것이다 :
window[x] = undefined;
try{
delete window[x];
}catch(e){}
Gasper는 그가 완성한 해결책에 대해 의견을 남겼지 만 실제 대답으로 그 가치가 있다고 생각합니다.
try
{
delete window.x;
}
catch(e)
{
window["x"] = undefined;
}
흥미로운 문제, 나는 오늘 밤 그것에 머리를 두드리는 중이었습니다. IE에서는 예외가 발생하지만 Firefox에서는 발생하지 않습니다. 이 해결 방법은 메모리 누수를 의심 할 것이므로 아껴서 사용하십시오.
왜 undefined를 할당하지 않습니까? 나중에 키를 열거하려는 경우 중요합니다 (해결 방법에 의존하는 경우 키 열거는 여전히 원하는 작업을 수행하지 않습니다 ...). 그러나 어쨌든 삭제와 정의되지 않은 할당의 차이점을 강조하려면 ( http://jsfiddle.net/fschwiet/T4akL/ ) :
var deleted = {
a: 1
};
var cleared = {
a: 1
};
delete deleted["a"];
cleared["a"] = undefined;
for(var key in deleted) {
console.log("deleted has key", key);
}
for(var key in cleared) {
console.log("cleared has key", key);
}
console.log("deleted has a?", deleted.hasOwnProperty('a'));
console.log("cleared has a?", cleared.hasOwnProperty('a'));
출력을 생성합니다.
cleared has key a
deleted has a? false
cleared has a? true
도움이 되나요?
window.x = 45;
alert(window.x);
window.x = null;
IE에서 이것을 시도했고 window.x에 값이 있었는데, 이는 설정할 수 있음을 증명합니다. 값을 null로 설정하는 것이 가장 좋은 방법입니다.
내 데이터 캐싱을 처리 할 때이 솔루션을 구현했습니다. 데이터가 캐시 빈도가 많지 않아 메모리 누수가 문제가 될 수 있습니다. 비용이 많이 들지만 주기적으로 개체를 다시 매핑하는 것이 손에서 벗어나지 않도록하는 가장 쉬운 방법이었습니다.
obj = {a: 1, b: 2, c: 3};
var max;
function unset(obj, key) {
try {
delete obj[key];
} catch (e) {
obj[key] = undefined;
}
max++;
if(max > 200) {
var keys = Object.keys(obj);
var len = keys.length;
var n_obj = {};
for(var i = 0; i < len; i++) {
if(obj.hasOwnProperty(keys[i]) && obj[keys[i]] !== undefined) {
n_obj[keys[i]] = obj[keys[i]];
}
}
return n_obj;
}
return obj;
}
obj; //{a: 1, b: 2, c: 3}
obj = unset(obj, "b"); //{a: 1, b: undefined, c: 3} OR {a: 1, c: 3}
//and then eventually we'll garbage collect and...
obj = unset(obj, "b"); //{a: 1, c: 3}
Hopefully, that's useful to some!
참고URL : https://stackoverflow.com/questions/1073414/deleting-a-window-property-in-ie
'code' 카테고리의 다른 글
드롭 다운 화살표의 색상 및 모양 변경 (0) | 2020.11.21 |
---|---|
@package 지시문은 Objective-C에서 무엇을합니까? (0) | 2020.11.21 |
Python에서 변수 이름으로 밑줄 _ (0) | 2020.11.21 |
HTML 5 비디오 또는 오디오 재생 목록 (0) | 2020.11.21 |
Rails 3 마이그레이션에서 열거 형 열을 어떻게 설명합니까? (0) | 2020.11.21 |