1

我希望扩展String类并添加一个简单的方法:

String.prototype.world = function(){
  return " world";
} 

我想做类似的事情:

"hello".world

然后回来"hello world"。而不是这样做:

"hello".world()

调用不带括号的函数将返回函数对象。

我正在寻找的是执行函数而不是返回它(不指定括号)。

我可以在 JavaScript 中以某种方式做到这一点吗?

编辑:据此使用__defineGetter__是非标准的并且已弃用。寻找替代品。

4

2 回答 2

4

您可以使用 setter getter 来做到这一点。jsfiddle。但是 IE < 9 不支持 setter getter;

 function getter(){
    return this + " world";
  }
  if(Object.__defineGetter__){ // chrome 
  String.prototype.__defineGetter__('world', getter);
}else{
 Object.defineProperty(String.prototype, 'world', { // IE
                    get : getter
                });
}
于 2012-10-04T15:49:58.090 回答
3

您可以像这样定义一个吸气剂:

String.prototype.__defineGetter__("world", function() {
    return this + ' world';
});

'hello'.world // 'hello world'

小提琴

于 2012-10-04T15:47:28.760 回答