WebKit 기반 브라우저에서 네이티브 코드 함수를 JavaScript 개체로 사용할 수 없습니다. 이러한 함수의 별칭을 직접 지정할 수 있습니까?WebKit에서 네이티브 코드 함수를 JavaScript 개체로 사용
이 예에 의해 설명하는 가장 쉬운, 그래서 여기에 내가 개발자 도구 콘솔에서 실행하고 무엇을 : 나는 Safari에서 jQuery Lint를 사용하려고로
console.warn;
// Outputs:
// function warn() {
// [native code]
// }
console.warn("console.warn");
// Outputs: "console.warn"
var _c = console;
_c.warn("_c.warn");
// Outputs: "_c.warn"
var _w = console.warn;
_w("_w");
// Outputs: "TypeError: Type error" on Safari/WebKit (Mac)
// Outputs: "TypeError: Illegal invocation" on Chrome (Mac)
var _w2 = function() { console.warn.apply(console, arguments); }
_w2("_w2");
// Outputs: "w2"
이 문제가왔다;
if((jQuery.browser.safari || jQuery.browser.webkit) && window.console) {
jQuery.LINT.level = 3;
jQuery.LINT.console = {
warn: function() { console.warn.apply(console, arguments); },
group: function() { console.group.apply(console, arguments); },
groupEnd: function() { console.groupEnd(); },
groupCollapsed: function() { console.group.apply(console, arguments); },
log: function() { console.log.apply(console, arguments); }
}
}
이상하게도 새로운 버전의 Firebug는 여러분이'console'의 메소드에 별명을 붙이면 괜찮습니다. – James
글쎄, 조금 거짓말. :-) 물론 그것은 구현에 달려있다; 자연스럽게 'this'가 무엇인지 신경 쓰지 않고 콜백 할 수있는 함수를 만드는 것이 가능합니다.이 경우 변수에 앨리어싱을 적용하면 ... 의존할만한 것이 아니지만. (또한 브라우저가 제공하는 비 기본 '호스트 객체'의 경우 모든 베팅이 해제됩니다.) – bobince