Object의 기능을 향상시키려는 동기는 단순히 데이터를 저장하는 개체 (예 : Java의 "hashmap")를 쉽게 처리 할 수 있기를 원합니다. 나는 hashmap.size()를 쉽게하고 싶다.모든 개체에서 사용할 수있는 기능을 가진 개체 개체 늘리기
this.objData[key1name] = data1;
과 :
var objData = {};
내 객체가이 같은 objData에 데이터를 추가 할 수있는 몇 가지 방법이 있습니다
은의 나의 목적은 다음과 같이 만들 때 비어 objData라는 속성을 가지고 있다고 가정 해 봅시다 내 개체도 objData에 액세스하는 몇 가지 방법을 가지고 있습니다.
if(this.objData.size() == 0):
물론 이러한 메서드는 없습니다 ists. 그래서 내 동기는 Object 객체 보강을 위해이다 :
Object.prototype.getOwnPropertyCount = function () {
var count = 0;
for(var item in this) {
if (this.hasOwnProperty(item)) {
count += 1;
}
}
return count;
};
지금 내가 할 수 있어야를 중 하나
if (this.objData.getOwnPropertyCount() == 0)
나 :
if(!objData.getOwnPropertyCount())
는하지만 실제로 나는 오류가 발생할 때 내가 작성한 코드와 전혀 관련이없는 페이지를로드하려고 시도하십시오. Google지도 api의 main.js에 오류가 표시됩니다. 부두교.
그래서 내가 대신 Object.prototype에의 실제 개체 증가시키기 위해 내 확대를 변경 :
Object.getOwnPropertyCount = function () {
//calculate the count
return count;
};
을 그리고 지금은 파이어 폭스에서 다음과 같은 오류 얻을 :
this.objData.getOwnPropertyCount is not a function
나는 여기에 놓치고 무엇을?
오른쪽. 감사. Crockford가 Object를 확장했을 때했던 "beget"정의를 읽었지 만 실제로 어떻게 사용했는지 확인하는 것을 잊어 버렸습니다 : p – achow
하지만 Object.Prototype을 왜 늘리지 못합니까? – achow
@ highwind7777, 이것은 많은 것들이 될 수 있습니다. 나는 당신의 페이지를 보지 않고 말할 수 없습니다. 대개는 for-in 문을 사용하는 스크립트입니다. for-in 문을 사용하여 * "반복"* 배열 객체 ... – CMS