프로토 타입 형 상속을 자바 스크립트로 이해하려고하지만 다음과 같은 경우에는 적용되지 않습니다. 어떤 도움을 주시면 감사하겠습니다. 이 생성자와Javascript의 프로토 타입 체인이 업데이트되지 않았습니다.
var base = function() {
var priv = "private"; // Private
var publ = "public"; // Public through a getter/setter (below)
// The object to return
var f = {};
f.publ = function (new_val) {
if (!arguments.length) {
return publ;
}
publ = new_val;
return f;
};
return f;
};
, 나는 base();
를 호출하여 개체를 만들 수 있습니다 다음과 같이
나는 생성자를 정의하고있다. 이러한 객체에는 public 메소드 (publ)가 있습니다. f.prototype = base();
와
var myclass = function() {
// Other parameters defined here
var f = function() {
// publ is inherited
console.log(f.publ());
};
// Trying to set the prototype of f to the object created by "base()"
f.prototype = base();
// Other methods defined here
return f;
};
내가 F를 만들고 싶어 :
이제 동일한 구조를 다음, 나는 위에서 정의 된 "기본 생성자"에 의해 만들어진 객체에서 상속 객체를 생성하는 새로운 생성자를 가지고 싶습니다 base()
에 의해 반환 된 객체에 정의 된 모든 메소드를 상속하지만 f는 방법 1802
환영받을 것입니다 무슨 일이 일어나고 있는지 이해하는 데 어떤 도움이 없기 때문에 f.publ를 호출하려고하는 것은 불평
M;
function Base() {
var priv = "private";
this.publ = "public";
}
이제 new Base
를 사용 Base
의 인스턴스를 만들 수 있습니다 다음과 같이
프로토 타입 상속이 필요 중 하나'새를 :
다음과 같은 답변에 대해 살펴 프로토 타입 상속에 대한 자세한 내용을 보려면 '연산자 또는'Object.create'. 너는 여기도 사용하지 않고있다. – Eric
이것은 생성자처럼 보이지 않습니다. 당신은'new'와 함께 생성자를 사용할 것입니다. 모듈 패턴과 비슷해 보입니다. – elclanrs
여러 의견에서 언급했듯이 Object.create를 사용하여 상속의 프로토 타입 부분을 설정하고 Child에서 Parent.call (this, args)을 수행합니다 (이는 부모로부터 Instance 멤버를 상속받습니다). 더 자세한 정보는 http://stackoverflow.com/a/16063711/1641941 – HMR