JS에서 연결된 목록에 우수 guide을 팔로우하고 있습니다. 함수에 속성이나 메서드를 추가하는 것처럼 '점'표기법이있는 함수가 발생했습니다. 어떻게 작동하는지 모르겠습니다. 여기에 코드 스 니펫이 있습니다. (repl.it link)자체 메서드로 함수 만들기
function List(){
List.makeNode = function(){
return {
data: null,
next: null
};
};
this.start = null;
this.end = null;
this.add = function(data){
if(this.start === null){
this.start = List.makeNode();
this.end = this.start;
} else {
this.end.next = List.makeNode();
this.end = this.end.next;
}
this.end.data = data;
};
}
var list=new List();
내 질문은 주로 2 행에 :
는우리는 또한이 필요합니다 여기
이 코드 줄이 무엇을하고 있는지 설명하는 텍스트의 라인입니다 쉬운 방법으로 노드와 하나의 가능한 방법을 만들려면 이 makeNode 메서드로 생성자 함수 List를 제공하는 것입니다.이 이 이상한 것처럼 보이면 함수가 또한에는 메소드와 속성이 있습니다. 이 방법은 클래스 또는 정적 메서드와 속성을 제공하는 것과 비슷합니다.List.makeNode = function(){}
저는 생성자 함수의 개념을 이해합니다. 마지막 코드 줄에서는 List() 생성자를 호출합니다. 새로운 키워드는 객체를 포함 VAR 목록에 결과에 : 나는 'List.makeNode'을 대체하는 경우,
{ start: null,
end: null,
add: [Function]
}
또한과 (내 목록() 생성자의 라인 2) 'this.makeNode ...' 나는 목록 개체의 메소드로 makeNode 기능을 할 것이다 만드는 오전 내 VAR 목록 개체 :
{ makeNode: [Function],
start: null,
end: null,
add: [Function]
}
나는 목록() 궁극적 목적은 궁극적으로 Object.prototype에 모든 것을 상속 이해합니다. 이 List() 객체/생성자 함수에는 다음이 포함되어 있습니다.
{ [Function: List] makeNode: [Function] }
저는 이것이 실제로 어떻게 작동하는지 잘 모릅니다.
- MakeNode는 List 개체의 속성/메서드이며 List 함수도 포함되어 있습니까?
- 왜 makeNode를 List와 연관시켜야합니까?
- List를 'this'로 변경하고 makeNode 을 'List()'의 모든 새 인스턴스에서 사용할 수 있습니까?
왜 ListMakeNode를 사용하고 있는지, 왜 저장되어 있는지, 그리고 왜 이런 식으로 구현되는지에 대해 매우 분실했습니다.
감사합니다.
한 것과 같다 클래스 목록을 만들 수있는 쉬운 방법을 조금을 추가 할 경우
* "List Function"그가 말한 내용 – Bergi
개인적으로 List 생성자의 로컬 함수로 만듭니다. 외부에서 볼 수있는 명백한 이유는 없습니다. 그것을 생성자 함수의 속성으로 만드는 것은 무언가 마치 교육학적인 이유에서와 같이 보인다. 내가 생각하는 견해. – Pointy