Javascript 具有getter值的函数
我想用getter函数创建函数。该函数应该可以使用Javascript 具有getter值的函数,javascript,function,getter,Javascript,Function,Getter,我想用getter函数创建函数。该函数应该可以使用(参数)调用,也可以不使用括号调用。 例: 然后调用play()和play将产生相同的结果,但您仍然可以执行play(song) 有没有办法做到这一点 附言: 使用ECMAScript第5版中的添加项,可以不使用括号调用函数 下面是一个在不使用括号的情况下调用函数并将其定义为getter的示例: var o = {}; var bValue = 38; Object.defineProperty(o, 'b', { get: function
(参数)
调用,也可以不使用括号调用。
例:
然后调用play()
和play
将产生相同的结果,但您仍然可以执行play(song)
有没有办法做到这一点
附言:
使用ECMAScript第5版中的添加项,可以不使用括号调用函数 下面是一个在不使用括号的情况下调用函数并将其定义为getter的示例:
var o = {};
var bValue = 38;
Object.defineProperty(o, 'b', {
get: function() { return bValue; },
set: function(newValue) { bValue = newValue; }
});
o.b; // 38
编辑
试试这个
Function.prototype.valueOf = function() {
return this();
}
Function.prototype.toString = function() {
return this.valueOf().toString();
}
function play(song) {
if (song) {
console.log('if case');
} else {
console.log('else case');
}
}
play; // else case
play(true); // if case
注意:在Javascript中,使用()覆盖函数的值和toString
方法是函数调用的正确语法,使用函数名而不使用它仅在那种上下文中才有意义
分配函数引用:
surface.ondraw = myfunction;
获取函数调用的实际结果:
result = myfunction();
这就是javascript语法的工作原理,我想这并不神秘。您刚才编写的代码有什么问题吗?调用play将返回对函数的引用,而不是调用函数本身。(已编辑)为什么希望变量像函数一样工作?在调用play
时,不使用括号。您只是引用函数,而不是执行(或调用)函数。另一种方法是创建引用函数的变量。不是“悲伤”而是幸运的:即使没有这种奇怪的代码,我们周围的代码也很糟糕。我知道这一点,但这只适用于值,而不适用于函数,对吧?我在寻找更多细节并找到了答案。我更新了我的答案it@Venugopal:你也明白它的作用吗?它不适用于一个简单的游戏在JavaScript中,valueOf
和toString
是每个对象继承的姐妹方法。其中一个方法将根据需要调用。如果表达式提示需要字符串,则调用toString
,否则调用其valueOf
。正如“JavaScript调用valueOf
方法将对象转换为基本值。您很少需要自己调用valueOf
方法;当遇到需要基本值的对象时,JavaScript会自动调用它。”通常,如果您使用的函数没有偏执,调用其valueOf
函数并返回函数定义。在这里,我们覆盖了valueOf
函数,在这里我们实际使用this()
调用函数。还有setter和getters函数
surface.ondraw = myfunction;
result = myfunction();