1

JavaScript로 작업하는 동안 .prototype.을 사용하는 이유는 누구에게 말해 줄 수 있습니까?

Google지도 API로 작업 할 때가 왔습니다.
우리는 google.maps.Marker.prototype.setPosition을 사용하고 있으며 클래스는 google.maps.Marker입니다.javascript mvc/oop 구조체의 프로토 타입은 무엇입니까

+4

MDN이 한 번 봐입니다 함께 일반적으로 개체의 방법을 시뮬레이션 : //developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_theprototype_chain –

+1

Javascript는 여전히 객체 지향이지만 일반적인 일반적인 상속보다는 프로토 타입 상속을 사용합니다. 위에 링크 된 MDN 문서의 차이점을 읽어보십시오. – srquinn

답변

2

(개정판) 왜 우리가하지 않는 한 (이 정의 된 setPosition 특성에 액세스 할 수 있습니다 google.maps.Marker.prototype.setPosition

한마디로

, new google.maps.Marker(/* params */)로 만든 물건을 사용하고 있습니다) 오버라이드 (override) : 그것의

google.maps.Marker.prototype.setPosition = function() { return 42; } 

var x = new google.maps.Marker(); 
x.setPosition(); // 42 

var y = new google.maps.Marker(); 
y.setPosition(); // 42 

x.setPosition = function() { return 'Overriden only for x'; };  
x.setPosition(); // Overriden only for x 
y.setPosition(); // 42 

역학은 MDN에 설명되어 있습니다. 요점은 new이 생성자의 prototype 속성에서 (프로토 타입 체인을 통해) 상속하는 객체를 생성한다는 것입니다.

1

단일 객체 대신 (C++의 정적 속성과 같은) 전체 클래스에서 속성을 변경해야하는 경우 프로토 타입을 사용하고 있습니다. 그들이 자바 스크립트

을 공부하기 전에

프로토 타입은 그래서 그들이 자바에서와 자바 스크립트를 사용하려면 ... C++이나 자바와

2

가장없는 프로그래머 잘 알고 정적 속성과 클래스의 기능에 액세스 할 수있는 방법입니다 및 C + +를 네 가지 개념을 시뮬레이션 :

클래스의 정적 필드. 클래스의 정적 메서드입니다. HTTPS : 객체의 인스턴스 필드, 객체

의 방법은 생성자의 프로토 타입 속성

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

Book.prototype.getName = function() { 
    return this.name; 
} 

var b = new Book("javascript"); 

console.log(b.getName()); // javascript 

http://jsfiddle.net/98yPb/이 데모

관련 문제