2014-12-15 4 views
-1

객체를 받아들이고 자체적으로 설정하는 생성자를 작성하려고합니다. 예를 들어인수로 전달 된 객체를 사용하여 새 객체를 만드는 중개자

: 분명히

var Somecontructor = function(object){ 
    this = object; 
} 

, 나는 아무것도를 할당 할 수 없습니다 "이"는 불변이지만, 내가 할 수있는 방법을 알아 내려고 노력하고 있기 때문이다. 어떤 아이디어?

편집 :이 질문에 왜 부정적인 투표가 필요한지 모르겠다. 내가하고 싶은 것은 인자로 전달 된 것을 사용하여 적합성을 만드는 객체를 생성하는 것입니다. 물론, 나는 이것을 할 수 있고 나는 그것을하는 가장 효율적인 방법을 찾고 싶었다. 당신의 대답이 효과가 없다면, 질문에 부정적인 투표를함으로써 끔찍한 인간이되지 마십시오.

+0

용도는 무엇입니까? – didierc

+0

그냥 돌아 오도록 설정하려면 나중에 ... 그 자체를 함수에서 반환하지 않습니까? – AngularHarsh

+0

더 많은 코드를 제공해 주시겠습니까? 그러면 생성자에 전달 된 객체로 정확히 무엇을하고 싶은지 알 수 있습니까? –

답변

1

이렇게하면 한 개체의 모든 속성이 새 개체의 속성으로 복사됩니다.

var SomeConstructor = function(obj) { 
    for(key in obj) { 
     this[key] = obj[key]; 
    } 
} 
+0

고마워! 이것은 도움이됩니다. 당신의 솔루션은 원하는대로 작동했으며, 이것을 답으로 표시 할 것입니다. http://jsbin.com/hixaq/1/edit?js,console –

+0

@torazaburo; 내 나쁜, 난 내 마지막에 복제 편집을하기 전에 대답을 쓰기 시작, 그래서 OP가 얕은 복사본을 원한다고 가정. 한편, 그것이 OP를 위해 작동한다면, 그것은 작동합니다, 그래서 지금 나는 무엇을해야하는지 잘 모르겠습니다. 나는 또한 당신의 비판을 완전히 비인간적으로 만드는 것에 대해 당신을 칭찬하고 싶습니다. 모범적 인 코멘트! –

+0

이것은 간단한 개체를 복사하는 훌륭한 솔루션입니다. 당신은 얕은 사본을 만들뿐 아니라 프로토 타입이 관련되어 있다면 정확히 원하는대로 작동하지 않을 수 있음을 알아야합니다. 주의 :'$ .extend', 또는'_.extend', 또는 좋아하는 라이브러리와 같은 것을 사용해서 거의 같은 일을 할 수 있습니다. –

1

개체를 복제하고 싶을 것 같습니다. 이를 위해서는 생성자 함수를 사용할 필요가 없습니다.

var cloneObj = function(obj){ 
    return JSON.parse(JSON.stringify(obj)); 
} 
console.log(cloneObj({ 
    property1: "One", 
    property2: "Two", 
})); 
+0

'console.log (new Somecontructor ({a : 1}))); – thefourtheye

+0

객체의 프로퍼티를 객체의 프로토 타입에 할당하고 싶지 않기 때문에이 작업이 수행되지 않습니다. 나는 그것을 사물 자체 안에서 원한다. http://jsbin.com/ziqede/1/ –

+0

@thefourtheye 그는 복제하기를 원하는 것처럼 보인다. –

관련 문제