Javascript 如何自动检测函数并返回值
我正在尝试用javascript作为ruby构建一个系统 例如,当我定义函数a时,如何调用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(),但我不知道该怎么做。 请帮帮我。 更新:我发现一个函数检测函数类型变量,但
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
Nota()
来得到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返回的值