그래서 John Resig의 blog을 읽고 자신의 micro-templating javascript engine을보고 프로토 타입 상속에 대한 이해를 깊게하기 위해 자바 스크립트 용 템플릿 관리 시스템을 직접 구현하려고했습니다. . 그러나, 내가 그것을 쓰기 시작한 순간, 나는 문제에 부딪쳤다.어떻게 부모 객체 함수를 자바 스크립트의 자식 객체에서 호출합니까
function template_manager() { };
template_manager.prototype = {
tags: {},
templates: {},
output: {},
default_template: "default",
set: function (tags, template_name) {
template_name = "Greetings!";
//template_name = this._util.template(this.nothing, this.default_template);
console.log(template_name);
},
get: function(tags, template_name) {
console.log("Getting");
},
unset: function(tags, template_name) {
console.log("Removing");
},
render: function(template_name) {
console.log("Rendering");
},
//_util goes here
};
// Take it for a quick test drive.
test = new template_manager;
test.set();
test.get();
test.unset();
test.render();
가 그럼 난 몇 가지 일반적인 코드 작업을 시작하고, 나는 유틸리티 오브젝트에 넣어하기로 결정 :
_util: {
// Used to set the default values for optional arguments
optional: function(obj, def_value) {
return (typeof obj === "nothing") ? obj : def_value;
},
template: function(template_name) {
return this._util.optional(template_name, this.default_template);
},
},
그리고 지금
가 시작하려면 여기 내 기본 코드입니다 , 내 _util.template()
함수를 내 set()
함수에서 호출하려고 할 때 this
이 template_manager
객체가 아닌 _util
객체를 가리 키기 때문에 물론 오류가 발생합니다. jQuery extend
메서드를 살펴 보았습니다. 그리고 나는 그것이 무엇을하는지 이해하고 있다고 생각합니다. 내 질문은, 내가 내 자신의/jQuery의 사용을 구현하려면 extend
메서드가 필요합니까 아니면 내 _util
개체에서 template_manager
개체를 호출하는 또 다른 방법은 무엇입니까?
(PS I 더글러스 크록 포드의 article 프로토 타입 상속에 검토 한 결과, 나는 대답이 생각 ,하지만 난 아직 완전히 이해하지 않는 두려워.)
@Chris는 이중 검사를하지 않아도됩니다. 그것을 잡아 주셔서 감사합니다! –