JavaScript/loopback:添加属性,其值是函数的结果
javascript/loopback: add property which value is the result of a function
编辑:这不是重复的。虽然答案很好,但这个问题适用于loopbackjs的上下文。在那里,大多数属性都是异步访问的。我尝试了建议的解决方案,但它不起作用,因为异步访问属性count
:
node.__count__children(function(err, count) {
if (err) {
console.log(err);
return;
}
return count;
});
这意味着我不能直接依赖语言功能,但必须考虑异步性。编辑结束
在 django/python 中,我可以定义一个这样的属性:
@property
def count_children(self):
return len(self.children)
这在javascript中也有可能吗?实际上我在环回的上下文中需要它,但也许这是该语言的一个功能?
我尝试过操作原型:
Node.prototype.count_children = function() {
return this.children.length;
}
但这只会向对象添加一个函数 count_children((,它不会将函数的值作为属性。这在javascript中可能吗?
我想你是说你想要一个属性上的"getter"行为。基本上你想调用一个没有参数的函数。如果是这样,您可以使用Object.defineProperty()
定义它:
Object.defineProperty(Node.prototype, "count_children", {
get: function() {
return this.children.length;
}
});
document.body.appendChild(document.createElement("pre")).textContent = "Total <li> count: " +
document.querySelector("ul").count_children;
<ul>
<li>foo
<li>bar
<li>baz
</ul>
如果您需要包装的行为是异步的,则似乎需要回调,因此 getter 属性不会提供分配回调的机会。
如果您要包装的 API 返回类似"Promise"对象的内容,您仍然可以返回该对象。你也可以返回你自己的 Promise,无论是作为新 ECMAScript 6 的一部分,作为外部库,还是作为你自己的更简单的实现。
相关文章:
- JScript 错误: 无法分配给函数结果
- 显示基于javascript函数结果的HTML代码
- 访问来自另一个函数的函数结果
- 将函数结果传递给Javascript中的另一个函数变量
- NaN作为函数结果而不是必需的整数出现问题
- 更改javascript更改函数结果的颜色
- 从函数结果中检测三角函数
- 根据函数结果使用 JavaScript 更改图像
- 如何返回函数结果并将它们设置为标记的内部 HTML
- JavaScript 如何将函数结果与数组中的值一起传递到同一个函数中
- 用
标记包装 JQuery 函数结果
- 节点函数结果未定义
- 使用Cheerio和Response for Node web scraper,将响应函数结果传递给视图
- 在所有项目javascript中显示函数结果
- 平板电脑友好的悬停工具提示,显示基于javascript函数结果的动态文本
- 在机器时间更改后立即更新Date()函数结果
- 屈服函数结果
- 如何在JavaScript中处理异步函数结果
- 声明和定义全局变量作为函数结果有时有效
- Jquery&函数结果,作为属性名称