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。