我有三个问题,它们都是相关的。
1)我想添加一个名为对象bar
的属性。String
我做了这个
String.prototype.bar=function() {console.log("jjjj");}
"mystring.bar//function()
"mystring".bar()//jjjj
但我想使用"mystring".bar
(没有函数调用)就像我们"mystring".length
用来获取字符串长度一样。我怎样才能做到这一点?
2) 现在我想更改 String 对象的内置长度方法。所以我做了这个
>>> String.prototype.length=function(){console.log("xxx");};
function()
>>> "mmmm".length
4
但长度方法没有改变。它仍然只返回字符串的长度。注意:我仅在控制台上更改此方法以用于学习目的
3)我很难从书中理解这个函数,javascript, the good parts by Crockford.
(第 40 页)这里是增加 String 对象的方法。它替换字符串中的 HTML 实体并用它们的等价物替换它们
String.method('deentityify',function() {
var entity = {
quot:'";,
lt:'<',
gt:'<'
};
//return the deentityify method
return function() {
return this.replace(/&([^&;]+);/g,
function (a,b) {
var r = entity[b];
return typeof r==='string' ? r : a;
}
);
};
}());
'<">'.dentityify();//<">
关于这个问题的问题:1)由于没有使用prototpye,这个方法是否适用于所有要使用的String对象。
2)在return this.replace(..
上面的部分中,我不明白什么参数被给予,a and b.
即当我调用 ' 时<">'.dentityify();
,得到什么a and b
以及如何执行该匿名函数。
谢谢大家的帮助