【发布时间】:2021-07-28 16:50:16
【问题描述】:
谁能解释为什么在以下示例中typeof result 返回string 时,result 在控制台中打印为[object Object]?
我从车把文档的最底部举了这个例子: https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access
我认为这可能与车把不允许访问 aString 原型的 toString 方法这一事实有关,但如果文档正确,这应该可以工作。
var template = Handlebars.compile(document.getElementById('template').innerHTML);
var result = template({ aString: " abc " }, {
allowedProtoMethods: {
trim: true
}
});
console.log(result, typeof result);
document.getElementById('output').innerHTML = result;
<script src="https://unpkg.com/handlebars@latest/dist/handlebars.js"></script>
<div id="output"></div>
<script type="template/handlebars" id="template">{{aString.trim}}</script>
【问题讨论】:
-
可能是因为
result字面意思是"[object Object]"。aString.trim是一个函数 object. -
看起来您只是按照文档中的示例进行操作? handlebarsjs.com/api-reference/…
-
你还调用了两次模板。
-
糟糕,我的错。它应该只被调用一次,但问题是一样的。 @FelixKling,是的,该示例直接来自文档。
-
@FelixKling
typeof运算符返回string。如果它是一个函数对象,我希望它返回function。你可以试试typeof function(){}。我认为 trim 函数实际上应该由车把调用