우리는 사용자 정의 시간대에 모든 날짜를 표시해야하는 응용 프로그램을 개발 중입니다. 자바 스크립트 날짜가 사용되는 외부 라이브러리 (GWT ...)를 사용합니다. GWT 코드를 재정의 할 수 없습니다. 또한 자바 스크립트 날짜가 사용자 정의 시간대를 설정하는 더 좋은 장소 인 것 같습니다. 우리는 프로토 타입 메커니즘을 사용하여 "접근"우선 먼저 시도 :브라우저 표준 시간대와 다른 시간대를 사용하는 방법은 무엇입니까?
var original_getUTCHours = Date.prototype.getUTCHours;
Date.prototype.getUTCHours = function(){
// -4 for the time zone offset
return original_getUTCHours.call(this)-4;
}
var myDate = new Date();
alert(myDate.getUTCHours());
을하지만,이 메커니즘은 오버라이드 (override) "접근"이 많이 있기 때문에 구현이 긴 것 같다. 각 접근자는 오프셋을 처리하는 특정 알고리즘이 필요합니다.
그래서 프로토 타입 메커니즘을 사용하여 Date 생성자를 ovveride하려고했습니다.
Uncaught TypeError: Object function Date(){
var now = original_date_constructor;
original_date_constructor(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()-4,now.getUTCMinutes(),now.getUTCSeconds(),now.getUTCMilliseconds());
} has no method 'getUTCFullYear'
는 날짜 생성자를 오버라이드 (override)하는 것이 가능하고 올바른 방법은 무엇입니까 :
var original_date_constructor = Date.prototype.constructor;
function Date(){
var now = original_date_constructor;
original_date_constructor(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()-4,now.getUTCMinutes(),now.getUTCSeconds(),now.getUTCMilliseconds())
}
그러나 우리는 크롬 디버거에서이 오류를 얻을?
Date.prototype = original_date_constructor.prototype;
당신은 날짜 생성자를 덮어 쓰지해야
감사 – Bergi