this question에서이어서 영국 신문의 일별 정서 분석을 나타내는 D3 그래프의 Js 변수를 만드는 DRY 방법을 만들고 싶습니다.동적으로 정의되지 않은 전역 변수에 액세스하는 경우 (D3의 예) DRY
var allObjects = { guardian : {line : gLine,chart : gChart},
independent : {line : iLine,chart : iChart}}// and so on for each newspaper
다음과 같이 내가 함수를 사용하여 변수를 할당 :
var guardian,independent; // many more here
var gLine,gChart; // many more here
var iLine,iChart; // many more here
내가 객체에 신문 특정 변수를 저장하고 다음은
내 스크립트의 몇 가지 예제 코드입니다function makeLine(name){return d3.svg.line().y(function(d) { return y(d[name]); }); }
// and so on for each newspaper attribute in AllObjects
항상 내 자신을 반복하는 대신 각 개체를 ind ividually : 잘 작동
makeLine('guardian'); makeLine('independent'); // etc
가 ..., 내가 좋아하는 것
은 온통 신문을 반복하고, 모든 신문 하나의 기능으로 개체를 할당 할 수 있으려면, 뭔가 같은 :var allFunctions = {line: makeLine(),chart: makeChart()};
function make(type){
var myFunc = allFunctions.type;
for(var prop in allObjects){prop.type = myFunc(type);}
}
make(line)
이 gLine
, iLine
할당 것이다 그래야 등
문제는 allObjects.guardian
에서 변수가 정의되지 않은 한,이 방법이 작동하지 않는 것입니다.
이러한 방식으로 리팩토링하는 방법에 대한 제안 사항은 무엇입니까?
:-) 실제로 고통을 느끼지 않으려 고하지만 "완료"는 문제를보고 실행하고 볼 수있는 것을 의미합니다. 특히 makeLine이해야 할 일이 무엇인지 알기가 어렵습니다. d3이 콜백을 호출하는'd' 객체를 통한 간접 지정을 감안할 때. * 더 자세한 * 정보가 포함 된 질문을 올리라고 제안한 이유 때문에 좌절하지 않아서 미안합니다. :-)하지만 당신이해야 할 일을 알아낼 수 있다면, 나는 당신이 그것을 할 수 있도록 도울 수 있습니다, 그리고 나는 단지 위에서 그것을 얻을 수 없습니다. –