kei*_*phw 1 javascript string function
我试图将java代码转换为javascript(js),我对js如何缺少许多字符串方法感到非常沮丧.我知道js字符串库,你可以做someString.length来获得字符串的长度.但是我对这个主题的最佳答案感到惊喜: 如何检查字符串"StartsWith"是否是另一个字符串? startsWith方法可以在我自己的js代码文件中定义,如下所示:
if (typeof String.prototype.startsWith != 'function') {
String.prototype.startsWith = function (str){
return this.indexOf(str) == 0;
};
}
Run Code Online (Sandbox Code Playgroud)
所以我试着为长度方法做类似的事情:
if (typeof String.prototype.length != 'function') {
String.prototype.length = function (){
return this.length;
};
}
var str = "a string";
alert(str.length());
Run Code Online (Sandbox Code Playgroud)
但它不起作用,当我尝试调用时,我在chrome中得到以下错误:未捕获的TypeError:对象的属性"长度"不是函数
有谁知道为什么我不能创建一个length()函数类似于如何为上面解释的startsWith(str)方法做?谢谢,基思
使用不可变length属性创建字符串实例,该属性不从String.prototype继承.所以你将无法创建一个length()为字符串方法.
见http://ecma-international.org/ecma-262/5.1/#sec-15.5.5
字符串实例从String原型对象继承属性,它们的[[Class]]内部属性值为"String".字符串实例还具有[[PrimitiveValue]]内部属性,长度属性和一组具有数组索引名称的可枚举属性.
请参阅http://ecma-international.org/ecma-262/5.1/#sec-15.5.5.1
创建String对象后,此属性将保持不变.它具有{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}.