javascript - 将函数转换成变量
我google了一下,似乎我不知道我在问什么,或者这是不可能的。我认为这可能是前者。javascript - 将函数转换成变量
如果我有一个对象
obj = {
func : function(){
return 'hello';
}
}
,我通常做alert(obj.func())
我当然得"hello"
但是,如果我想有obj.func
是一个简单的变量,是有可能以某种方式?我不会将参数传递给函数,我只是想将它的返回值作为一个普通变量(如alert(obj.func)
)引用,而不是函数调用。
谢谢。
试试这个:
obj = {
func : (function(){
return 'hello';
})()
}
var varFunc = function() { alert("hello"); }
varFunc();
你所谈论的是一个getter:它是可以作为一个属性的函数。 这是标准的自JavaScript 1.8.5,这意味着旧的浏览器将无法处理它。
的语法如下,使用例如:
obj = {
get func() { return "hello" ; }
};
// use like this :
console.log(obj.func);
最有可能你会想也定义setter:这也是表现 像一个属性的函数。语法是:
obj = {
get func() { return this._innerText ; },
set func(txt) { this._innerText = txt ; },
_innerText : "hello"
};
console.log(obj.func) ; // output is hello
obj.func = "godd bye" ;
console.log(obj.func) ; // output is good bye
显然,作为经常与简单的例子,这个人是没有大用处:
让我们使用的getter/setter看到一个度弧度转换器:
var Angle = {
get degree() { return this._degree ; },
set degree (dg) { this._degree = dg ; },
get radian() { return 2*Math.PI*this.degree/360 ; },
set radian (rd) { this._degree = rd * 360/(2*Math.PI) ; },
_degree : 0
} ;
// you can use :
Angle.radian = Math.PI/2;
console.log (Angle.degree); // -->> output is 90
Angle.degree=45 ;
console.log(Angle.radian) ; // --> output is 0.7853... which is PI/4
你也可以看一下Object.defineProperty,它允许定义标准属性和getters/setters,但是有更多的选项,特别是'隐藏'属性的选项,允许它不被枚举。
更多信息:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/get https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/set https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty
'obj.func = obj.func();' – Bergi 2013-02-14 22:29:34