2011-01-25 7 views
3

개체가 parameter이고 속성이 value입니다. 그것은 thusly 히자바 스크립트에 속성이있는 함수가 있습니까?

을 정의
var parameter = { 
    value : function() { 
     //do stuff 
    } 
}; 

내 문제는 일부의 경우, 값이

내가 그렇게 할 수 length라는 이름 자체의 속성을 가질 필요가 있다는 것입니다입니까? 퍼팅 this.length = foo이 작동하지 않는 것 같습니다. 객체 선언 다음에 parameter.value.length = foo도 없습니다.

+0

'value()'에서 반환 된 객체의 길이가 필요하다는 것을 의미합니까? – Hemlock

+0

아니요, 저는'value'의 길이를 확인하고 배열처럼 반복합니다. – griotspeak

답변

6

'길이'라는 단어를 선택하면 문제가있는 것 같습니다. 자바 스크립트에서 함수는 객체이며 속성을 가질 수 있습니다. 모든 함수에는 이미 함수가 선언 된 매개 변수의 수를 반환하는 length 속성이 있습니다. 이 코드의 작동 방식 :

var parameter = { 
    value : function() { 
     //do stuff 
    } 
}; 

parameter.value.otherLength = 3; 

alert(parameter.value.otherLength); 
+1

Ken이 맞습니다. (이 답변에 맞았습니다) ... http://ejohn.org/blog/javascript-method-overloading/ 및 http : // ejohn을 참조하십시오. org/apps/learn/# 87 – ken

+0

좋아요, 그게 재미 있어요. 이유는 내가 길이를 골랐다는 이유는 값이 대부분의 경우 배열이기 때문에 함수가 그 의미에서 배열처럼 보이기를 원했기 때문입니다. 하지만 고마워. – griotspeak

+0

첫 번째 링크 켄에 대해 매우 감사드립니다. 나는이 문제와 완전히 다른 문제를 가지고 있었다. – griotspeak

2

parameter.value.length이어야합니다.

var obj = { 
    method: function() {} 
}; 
obj.method.foo = 'hello world'; 
alert(obj.method.foo); // alerts "hellow world" 

기능은 기술적으로 개체, 그래서 그들은 방법과 자신의 특성을 가질 수 있습니다 다음 실행합니다.

+0

실제로 작동합니다. – JohnO

+0

하지만 길이를 정의하려고 시도하지 않는 경우 – griotspeak

-1

시도해보십시오. 그것은 작동합니다 :

var parameter = { 
    value : { 
    length : '' 
    } 
} 

var newLength = parameter.value.length = 10; 
alert(newLength); // output: 10 

나는 기본적으로, 개체 리터럴 표기법에서 귀하의 질문을 이해한다면, 개체는 다른 개체 등을 포함 할 수 있습니다. 따라서 내부 객체와 속성에 액세스하려면 계층 구조 다음에 평소와 같이 점 찍기를 수행하면됩니다. 위의 경우 '매개 변수' 인 경우 내부 객체 '값', 내부 객체 속성 '길이'입니다.

+0

제 문제는'value'를 함수로 정의하는 데 있습니다. – griotspeak

관련 문제