首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_.function()版本的_.property()函数

_.function()版本的_.property()函数
EN

Stack Overflow用户
提问于 2014-03-05 17:03:50
回答 4查看 1.5K关注 0票数 1

下划线有一个对象函数_.property(key),它返回一个函数,该函数本身返回任何传入对象的'key‘属性。例如:

代码语言:javascript
复制
var moe = {name: 'moe'};
var propFunction = _.property('name');
var value = propFunction(moe);
=> 'moe'

我想知道,除了一个对象的属性之外,是否有一种好的方法可以用下划线来获得对象函数的相同行为。我很确定它没有一个函数,但是我想知道是否有一些合理的函数组合在一起可以完成我想做的事情。例如:

代码语言:javascript
复制
var moe = {getName: function() { return 'moe'; }};
var funcFunction = _.underscoreGoodnessHere('getName');
var value = funcFunction(moe);
=> 'moe'

这将删除一些伪实代码中的一些样板,如下所示:

代码语言:javascript
复制
this.collection.filter(function(model) { return model.isHidden(); });
// could change to this:
this.collection.filter(_.underscoreGoodness('isHidden'));

不管它有什么价值,如果没有一种很好的方法来完成我所要求的,但您仍然有更好的方法来编写我上面的伪实代码,我仍然很想听!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-05 18:01:07

您正在寻找强调在_.invoke()中使用的回调函数--但是这不是公开的。您可以自己轻松地构建它:

代码语言:javascript
复制
_.method = function(name) {
  var args = _.tail(arguments),
      isFunc = _.isFunction(name);
  return function(value) {
    return (isFunc ? name : value[name]).apply(value, args);
  };
};
票数 3
EN

Stack Overflow用户

发布于 2014-03-05 17:17:55

您可以创建基于_.property的自己的函数

代码语言:javascript
复制
function callProperty(prop) {
    var getProperty = _.property(prop);
    return function(obj) {
        return getProperty(obj)();
    };
}
票数 2
EN

Stack Overflow用户

发布于 2014-03-05 17:46:10

我能想到的最短的是使用:_.result()

代码语言:javascript
复制
function functionProp(prop){
    return function(obj){
        return _.result(obj, prop);
    };
}

它实际上也适用于非函数属性。所以:

代码语言:javascript
复制
var moe = {getName: function() { return this.name; }, name: 'moe'};
'moe' == functionProp('getName')(moe);
'moe' == functionProp('name')(moe);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22204329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档