2017-04-19 2 views
1

함수에 전달되는 개체 속성이 있다고 가정합니다. 'Tom'가있는 개체를 가져 그래서 기본적으로 'Tom'은 '이름'속성 값으로 개체 가져 오기

function(name) { 
    do something //non-essential for my question 
} 

로 함수에 전달되는 것이 가능, -이 경우 '이름'에서 (값 'Tom'있다) 'myObject.name'으로 가득 재산의, 그냥 정보를 가지고 'Tom'? 기본적으로 나는 myObject을 얻으려고합니다.

고마워요 :)

+0

는 다행히도 불가능하다. – zerkms

+0

아니, 그렇게함으로써 무엇을 성취하려고합니까? – Ryan

답변

0

아니, 그건 불가능합니다.

함수가 알고있는 모든 것은 매개 변수 중 하나가 "Tom"문자열을 가리키고 다른 점은 메모리의 다른 문자열을 가리키는 것이 아닙니다.

0

배열 내에 객체를 저장할 수 있으며 객체의 속성 이름과 일치하도록 배열에 필터링 할 수 있습니다. for..of 루프 Object.entries()을 사용하여 함수에 전달 된 매개 변수에 객체의 속성 값 배열을 반환합니다.

const data = Array(); 
 

 
const setObjectPropertyName = _name => { 
 
    data.push({[_name]:_name}); 
 
    return data 
 
} 
 

 
const getObjectByPropertyName = prop => { 
 
    let res = `${prop} property not found in data`; 
 
    for (let obj of data) { 
 
    for (let [key] of Object.entries(obj)) { 
 
     if(key === prop) return obj; 
 
    } 
 
    } 
 
    return res; 
 
} 
 

 
let s = setObjectPropertyName("Tom"); 
 
let g = getObjectByPropertyName("Tom"); 
 
let not = getObjectByPropertyName("Tome"); 
 

 
console.log(s,"\n", g, "\n", not);

0

면책 조항 : 당신이 절대적으로이 작업을 수행해서는 안된다. 실제로 게시 할 수 있기 때문에 (일부주의 사항 포함) 실제로는 은 좋지 않습니다. 이 브라우저에서 실행하고 모든, 당신은 기술적으로 이름을 창에서 물체를 확인하십시오 window 객체를 반복 수 (스크립트 태그에 같은) 전역에서 실행중인 것을 전제로가는

속성에 추가하고 해당 name 속성이 함수에 전달 된 이름과 일치하는지 확인합니다.

var myObject = { 
 
    name: 'Tom', 
 
    thisIs: 'so awful', 
 
    imSorry: true, 
 
}; 
 

 
function doSomethingWithName(name) { 
 
    for (var obj in window) { 
 
     var tmp = window[obj]; 
 
     if (Object(tmp) === tmp && tmp.name === name) { 
 
      return tmp; 
 
     } 
 
    } 
 
} 
 

 
console.log(doSomethingWithName(myObject.name));