2011-08-19 8 views
0

Google지도 API를 사용할 때 이해가 안되는 것을보고 있습니다. 나는 Google maps javascript issue

57.220445088498764 { 
    toJSON : function(key) { return this.valueOf(); } } 

사람이 무엇인지 나에게 설명 할 수 ...

var bounds = map.getBounds(); 
var viewport = { 
    top: bounds.getNorthEast().lat(), 
    right: bounds.getNorthEast().lng(), 
    bottom: bounds.getSouthWest().lat(), 
    left: bounds.getSouthWest().lng() 
}; 

이 viewport.top 반환 밝혀 ... 뷰포트를 당길 다음 코드가? 나는 js 프로토 타입을 완전히 이해하지는 않지만 js 프로토 타입은 제한된 이해를 바탕으로 객체의 인스턴스에 첨부 된 함수입니다. 숫자가 객체이기 때문에 Google은 반환하는 모든 객체에 'toJSON'이라는 프로토 타입 함수를 배치 했습니까?

어떻게하면 제거하여 57.220445088498764라는 숫자로 끝낼 수 있습니까?

json2.js JSON.stringify를 사용하려고하는데이 이상한 기능으로 인해 적절한 JSON이 반환되지 않습니다.

+0

'delete Number.prototype.toJSON' –

+0

현재 상황이 어떻게 진행되고 있습니까? Number 프로토 타입에 추가 기능이 있으면 아무런 상처를 입혀서도 안됩니다. 이 기능을 제거하는 것은 정말 나쁜 생각 일 수 있습니다. Google API의 다른 부분이이 기능에 의존 할 수 있기 때문입니다. – Pointy

답변

1

자바 스크립트에서는 모든 것이 개체 ** - 짝수입니다. 즉, 숫자에 상관없이 모든 것을 메서드에 추가 할 수 있습니다. Firebug 또는 Chrome 관리자에서 다음을 시도해보십시오.

Number.prototype.hello = function() {alert ("Hello, world!"); }

var x = 2; 
x.hello(); 

x가 숫자이지만 여전히 방법이있을 수 있습니다. Number의 프로토 타입에 메소드를 추가하여 모두 숫자에 해당 메소드가 있는지 확인합니다. 물론, 일반 numbery 가지 절차가 남아도 작동합니다

var y = x + 2; 
window.console.log(y); // Will output 4. 

이것은적이고을위한 숫자에 toJSON 방법을 추가 할지도 API에 의해 사용될 것으로 보인다. 그것은 내 생각에 훌륭한 디자인 전략은 아니지만, 또한 무해합니다. 전화 번호는 전화 번호처럼 계속 작동하므로 toJSON 메서드는 무시해도됩니다.

** 숫자 또는 문자열 리터럴과 같지 않은 것을 제외하고 **.