2013-02-26 76 views
-1

我有一个类只有一个属性:Javascript快捷方式...有可能吗?

var A = function(b){this.Value=b}; 
var a = new A('hello world'); 

我想如下检索属性的值:

var what = a; //instead of using var what =a.Value; 

这可能吗?在python中,我知道我可以使用调用来实现它。

class A: 
    def __init__(self,b): 
     self.Value=b 
    def __call__(self): 
     return self.Value 
a=A('hello world') 
what=a() 
+1

你试过吗? – 2013-02-26 08:36:37

+1

要实现什么?您如何期望区分评估整个对象及其在任何表达中的部分?使用'call',你必须用圆括号写一个对象名。 – raina77ow 2013-02-26 08:45:08

+0

好吧,如果你还有额外的语法,你可以实现'valueOf'函数,然后每次你想要获取它们的值时,用'unary plus'运算符预先加载你的对象名称。问题是,除了你之外,有人会(但不是你6个月后)在审查代码时理解这个想法吗? – raina77ow 2013-02-26 08:54:38

回答

1

你能做的最好的是在类原型定义toString方法,这样你就可以在琴弦直接使用对象:

A.prototype.toString = function() {return this.Value;}; 
var a = new A('hello world'); 

var str = 'The string is: ' + a; 
+0

还没有投票,但使用'valueOf'的方式更加语义化。尽管'toString'在技术上可以返回任何东西,它应该返回一个'String'值。 'valueOf'完全是另一回事。 – raina77ow 2013-02-26 08:56:10

+0

@ raina77ow是的,当然我同意你的看法,但是看到...... kurro想要的是*快捷键*,可惜的是,使用'valueOf'不是...... – MaxArt 2013-02-26 09:16:36

+0

告诉我,'valueOf'到底有多'你的例子中使用? – raina77ow 2013-02-26 10:13:36

1

是的,你可以。但它是一个对象。如果你想获得它的价值,你必须致电what.Value