我正在尝试用 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/