javascript - 如何自动检测函数并返回值

标签 javascript ruby function

我正在尝试用 javascript 构建一个 ruby​​ 系统。

例如,当我定义一个函数a时,如何调用a(不是a())并得到1

var a = function(){
  return 1;
}
console.log(a);//wanted result 1, not function(){...}
console.log(a());//it's okay.

我认为可以使用,以便在运行之前,检测a作为函数并自动更改为a(),但是我不知道我该怎么做。 请帮助我。
更新:我发现一个函数检测函数类型变量,但我不知道如何使用它。

function isFunction(functionToCheck) {
 var getType = {};
 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
}

最佳答案

您可以使用对象的 get 属性来实现此目的:

function getValue(str) {
  return 'Hello ' + str;
}

function Person(fname, lname){
  this.fname = fname;
  this.lname = lname;
  Object.defineProperty(this, 'fullName', {
    get: function(){
      return this.fname + ' ' + this.lname
    }
  });
  
  Object.defineProperty(this, 'greet', {
    get: function(){
      return getValue(this.fullName)
    }
  });
}

var p = new Person('foo', 'bar');
console.log(p.greet)

关于javascript - 如何自动检测函数并返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728503/

相关文章:

javascript - 处理dojo EdgeToEdgeStoreList事件

ruby-on-rails - 我在哪里可以阅读有关 ruby​​ on rails 中的 REST 的信息?

c - sublime text 3 C 编译器(我如何在 main.c 中使用带头文件的函数)

ruby - 你如何使用 Ruby block 来有条件地执行某些东西?

javascript - Ember 中的自定义排序比较

javascript - 鼠标悬停或单击链接/按钮时的菜单可扩展 CSS 脚本

ruby - iconv 将来会被弃用,音译

ruby - 将 Jenkins 趋势图集成到 dashing dashboard

C:将变量传递给函数会给出错误的返回

javascript - 使用 Angular Router 在组件内加载组件