2014-10-21 4 views
0

예에서 볼 수없는 속성 : http://sporto.github.io/blog/2013/02/22/a-plain-english-guide-to-javascript-prototypes/자바 스크립트 : 프로토 타입은 여기에서 가져온 부모

는 또한 여기에 비슷한 질문을했다 : Javascript: Added function does not appear on parent object.

은 프로토 타입으로 속성을 추가 객체

>function Person(name) { 
    this.name = name; 
} 

을 만듭니다. 새 종류 속성이 개체에 나타나지 않습니다.

>Person.prototype.kind = 'person' 

>Person 
<function Person(name) { 
    this.name = name; 
} 

이제 부모를 프로토 타입으로 사용하여 새 개체를 만듭니다. 추가 된 속성이 표시됩니다.

var zack = new Person('Zack'); 

Person {name: "Zack", kind: "person"} 

왜 그것이 아이들에게 그것을 전달할 수 있지만, 사람 객체 부모에 보이지 특성 종류의 추가? 이 사람 beceause입니다

+1

무엇이 문제입니까? 그것은 분명하지 않습니다. 어떤 결과를 기대 했습니까? –

+0

내 질문에 왜 원래 부모 개체의 추가 된 특성을 볼 수 없습니다. – ardochhigh

+0

혼란스러워. 왜/어떻게 당신이'사람 '이 바뀔 것으로 기대합니까? 프로토 타입 객체는 생성자 함수에 의해 생성 된 객체에만 영향을 미치며 함수 자체는 영향을 미치지 않습니다. 프로토 타입 객체를 변형하면 생성자 함수가 마술처럼 변경되지 않습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript에 도움이 될 수 있습니다. FYI'function Person'은 (당신이 의미하는 것처럼) 객체를 생성하지 않습니다. 객체를 생성 할 수있는 constuctor 함수를 생성합니다. –

답변

2

단지 연료 소모량 (객체)입니다/생성자 :

Person = 
function Person(name) { 
    this.name = name; 
} 

사람에 종류의 객체가이에 프로토 타입에

Person.prototype = 
Person {kind: "person"} 

임없는 전문가를 참조하려면 있지만, 새 생성자를 만들려면 함수를 덮어 써야합니다.

당신은 예를 특정 변수

function Person(name) { 
     this.name = name; 
    } 

Person.prototype.kind = 'person'을 설정할 수있는 생성자로 (아래) 기능을 볼 수 있었다 당신은 Person 생성자에서 찾고있다

1

클래스의 정적 변수와 같습니다.

당신이이 kind 속성을 보여줄 것 Object.getOwnPropertyNames(Person.prototype)

를 사용할 수있는 Person의 정의의 속성을 찾으십시오.

관련 문제