을해야 할 두 번째에있는 동안 당신이
Something.sayHi();
을 수행 할 수 있습니다
당신은 아마 말을 그 라인을 원했다 첫 번째 예제에서는 실제로 이미 객체 인스턴스 인 object literal을 선언합니다.
두 번째 예에서는 객체 인스턴스를 생성하기 위해 new
연산자와 함께 사용할 수있는 생성자 함수를 정의합니다.
개체 리터럴을 사용하여 개체의 새 인스턴스를 만들고 프로토 타입 상속을 수행 할 수도 있지만 Douglas Crockford도이 기술을 홍보합니다.
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
이 도우미 기능은 매우 직관적이고 편리하게 사용할 수 있습니다
은 기본적으로 당신은
object
연산자를 할 수 있습니다.
그것은 기본적으로 새 개체 인스턴스가 생성 함수 내에서, 기존의 객체는 가 새 개체의 프로토 타입에을 체인이며, 그 반환 매개 변수로 객체를받을 수 있습니다.
그것은이처럼 사용할 수 있습니다 : 당신이 원하는대로
는
var oldObject = {
firstMethod: function() { alert('first'); },
secondMethod: function() { alert('second'); },
};
var newObject = object(oldObject);
newObject.thirdMethod = function() { alert('third'); };
var otherObject = object(newObject);
otherObject.firstMethod();
당신은 이전에 정의 된 객체로부터 새로운 인스턴스를 만들고, 더 갈 수 있습니다.
권장 :
출처
2009-08-08 06:48:52
CMS
이 또한 나를 위해 좋은 질문, 게시물에 대한 감사입니다. –
편집에서 질문에 관해서는, 당신이하고 싶은 일에 달려 있습니다. 객체 복사본이 하나 뿐인 경우 첫 번째 구문으로 이동하십시오. 'Something'이 다른 언어에서'Class' 인 것처럼) 여러 복사본을 만들고 싶다면 두 번째 구문 (또는 실제로'sayHi'를 생성자 안에 정의한 편집 된 버전으로'this.sayHi = function() {...}', 이것이 표준입니다. –