Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何自动检测函数并返回值_Javascript_Ruby_Function - Fatal编程技术网

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

Javascript 如何自动检测函数并返回值,javascript,ruby,function,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(),但我不知道该怎么做。 请帮帮我。 更新:我发现一个函数检测函数类型变量,但

我正在尝试用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属性来实现以下目的:

函数getValue(str){ 返回Hello+str; } 职能人员(fname,lname){ this.fname=fname; this.lname=lname; Object.defineProperty(这是“全名”{ get:function(){ 返回this.fname+“”+this.lname } }); Object.defineProperty(这是“问候”{ get:function(){ 返回getValue(this.fullName) } }); } var p=新人(‘foo’、‘bar’);
console.log(p.greet)您可以使用对象的get属性来实现这一点:

函数getValue(str){ 返回Hello+str; } 职能人员(fname,lname){ this.fname=fname; this.lname=lname; Object.defineProperty(这是“全名”{ get:function(){ 返回this.fname+“”+this.lname } }); Object.defineProperty(这是“问候”{ get:function(){ 返回getValue(this.fullName) } }); } var p=新人(‘foo’、‘bar’);
log(p.greet)一种简单的方法是使用立即调用的函数表达式来实现这一点。将函数括号括起来,然后在末尾添加一组
()
。每当调用
a
时,其中的函数将立即启动

 var a = (function(){
 return 1;
 })();
 console.log(a)
 // will return 1

一种简单的方法是使用一个立即调用的函数表达式来实现这一点。将函数括号括起来,然后在末尾添加一组
()
。每当调用
a
时,其中的函数将立即启动

 var a = (function(){
 return 1;
 })();
 console.log(a)
 // will return 1

不清楚你所说的“一个javascript系统作为ruby”是什么意思。我想用
a
而不是
a()
来得到1,@Rajesh的答案是相似的。你为什么要这样做?听起来你想改变语言。不清楚你所说的“以javascript作为ruby的系统”是什么意思。我想用
a
Not
a()
来得到1,@Rajesh的答案是类似的,你为什么要这样做?听起来你想改变语言。太好了!我从您那里发现了非常令人兴奋的事情。请注意,这些值(
greet
fullName
)确实有一个setter,因此执行
p.fullName='bla'
不会有任何作用。你也可以用它来实现不变性。我明白了,真的谢谢你。太好了!我从您那里发现了非常令人兴奋的事情。请注意,这些值(
greet
fullName
)确实有一个setter,因此执行
p.fullName='bla'
不会有任何作用。你也可以用它来实现不变性。我明白了,真的谢谢。谢谢你的努力,
console.log(a)
将返回1,但是
console.log(a())
将返回什么?对不起,我一定误解了你的意图。我以为您想调用
a
而不是
a()
。在我的例子中,a不是一个函数,它只是内部生命返回的值。我正在尝试a和a()都是可能的。为了您的努力,
console.log(a)
将返回1,但
console.log(a())
将返回什么?抱歉,我一定误解了您的意图。我以为您想调用
a
而不是
a()
。在我的例子中,a不是函数,它只是内部iife返回的值