Мой вопрос, вероятно, лучше всего иллюстрируется на примере.В javascript я привык делать что-то вроде этого:
// create a simple class
function myClass() {
this.attr_example = "attribute";
}
myClass.prototype.do_something = function() {
return "did something";
}
// create an instance of it, and modify as needed
var thing = new myClass();
thing.myMethod = function(arg) {
return "myMethod stuff";
}
// ... so that this works as expected
console.log(thing.myMethod());
console.log(thing.do_something());
console.log(thing.attr_example);
Когда дело доходит до выполнения чего-то подобного в ColdFusion, я застреваю.Я постоянно чувствую, что хочу сделать что-то вроде этого:
<cfscript>
// thing.cfc contains a normal cfcomponent definition with some methods
var thing = createObject("component","Thing");
function formattedcost() {
return "#LSCurrencyFormat(this.cost)#";
}
thing.formattedcost = formattedcost;
</cfscript>
<cfoutput>
#thing.formattedcost()#
</cfoutput>
Давайте предположим, что для этого вопроса нет смысла добавлять «formattedcost» в качестве метода в класс Thing, потому что это чисто презентационный,Предположим также, что простого использования #LSCurrencyFormat(thing.cost)#
в тегах <cfoutput>
недостаточно, потому что нам нужно, чтобы экземпляр Thing
оценивался с помощью системы шаблонов (в данном случае это усы).Более того, я бы хотел избежать создания другого файла .cfc, просто чтобы расширить класс Thing
для добавления нескольких методов.
Что я могу сделать?Возможен ли такой стиль программирования в ColdFusion?