Я инициирую ХФУ, как этот.
<cfscript>
lock scope="application" timeout="5" {
application.mycfc = new mycfc();
}
writeOutput(application.mycfc.readVars());
</cfscript>
В CFC я устанавливаю некоторые свойства.
component output="false" accessors="true" {
property name="title";
property name="foo";
this.title = "mycfc";
function init() {
this.foo = "bar";
// I can now properly read this.title, or this.foo.
return this;
}
function readVars() {
// Here, I can read this.title, from the constructor space, but I can't
// read this.foo. It's just blank (because the default value of the
// `default` attribute of `property` is "")
}
}
Из-за реализации (кэширование в приложении) я могу вместо этого использовать application.mycfc.foo
в readVars()
.
Из-за названия this
Google сложно узнать подробности. Я думал, что это будет стойким в течение всей жизни ХФУ, но, видимо, это не так?
Я, конечно, мог бы сделать что-то вроде
var self = application[this.title]; // or application.mycfc
Или, может быть, даже
this = application[this.title];
В функциях, где я хочу получить / установить без ввода application.mycfc
каждый раз.
Просто пытаюсь убедиться, что я не делаю что-то не так, или заново изобретаю колесо.
В моей реальной реализации я извлекаю строки из базы данных, чтобы заполнить структуру.