Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为原型调用不带括号的方法_Javascript_Prototypejs - Fatal编程技术网

Javascript 为原型调用不带括号的方法

Javascript 为原型调用不带括号的方法,javascript,prototypejs,Javascript,Prototypejs,我希望扩展String类并添加一个简单的方法: String.prototype.world = function(){ return " world"; } 我想做一些类似的事情: "hello".world 然后返回“你好,世界”。而不是做: "hello".world() 调用不带括号的函数将返回函数对象 我想要的是执行函数而不是返回它(不指定括号) 我可以用JavaScript实现吗? 编辑:根据,使用\uu defineGetter\uuu是非标准的,不推荐使用。寻找替代品

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

String.prototype.world = function(){
  return " world";
} 
我想做一些类似的事情:

"hello".world
然后返回“你好,世界”。而不是做:

"hello".world()
调用不带括号的函数将返回函数对象

我想要的是执行函数而不是返回它(不指定括号)

我可以用JavaScript实现吗?


编辑:根据,使用
\uu defineGetter\uuu
是非标准的,不推荐使用。寻找替代品

您可以这样定义一个getter:

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

'hello'.world // 'hello world'

您可以这样定义一个getter:

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

'hello'.world // 'hello world'

您可以使用setter-getter实现这一点。但是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
                });
}

您可以使用setter-getter实现这一点。但是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
                });
}

你为什么要这样做?我很确定答案是否定的;看看这个问题:@GustavCarlson,那么稍后我可以有类似于:3.days.ago的东西,你为什么要这样做?我很确定答案是否定的;看到这个问题:@GustavCarlson,那么稍后我可以得到类似于:3.days.ago的内容根据本文,它被弃用了:根据本文,它被弃用了:根据本文,它被弃用了:@sagivo有两种定义属性的方法查看解决方案。FF支持Object.defineProperty。控制台中的Object.defineProperty。根据这篇文章,它被弃用:@sagivo有两种定义属性的方法,请参阅解决方案。FF支持Object.defineProperty。控制台中的Object.defineProperty。