所以,我在读约翰·瑞斯格的
blog
看到他的
micro-templating javascript engine
并决定尝试实现自己的javascript模板管理系统,加深对原型继承的理解。然而,当我开始写的时候,我遇到了一个问题。
首先,这里是我的基本代码:
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()
在My中的功能
set()
函数i当然会出错,因为
this
指向
_util
对象而不是
template_manager
对象。我看了一下jquery
extend
方法,我想我明白它在做什么。我的问题是,我
需要
实现我自己的/使用jquery的
延伸
方法,或者有其他方法让我调用
模板管理器
来自我的对象
乌蒂尔
对象?
(P.S.我看过道格拉斯·克罗克福德的
article
关于原型继承,我
认为
答案就在那里,但恐怕我还没有完全理解。)