我从一本书中得到了这个练习(没有解决方案):
想象一下String()构造函数不存在.创建一个构造函数MyString(),它尽可能地像String()一样工作.您不能使用任何内置字符串方法或属性,并且请记住String()不存在.您可以使用此代码来测试构造函数:
Run Code Online (Sandbox Code Playgroud)>>> var s = new MyString('hello'); >>> s.length;
然而,我有一个解决方案,但不确定我是否遵循了要求(即:"我不允许使用任何内置的字符串方法或属性"); 这是我的解决方案:
function MyString(string) {
this.length = 0;
for(var i in string) {
this.length++;
}
}
var x = new MyString("Hello");
x.length;
Run Code Online (Sandbox Code Playgroud)
我不确定的是for-in循环.你能告诉我那个循环中字符串变量的数据类型是什么吗?是那种数组还是我用它作为字符串(这是我确实打破了要求)?非常感谢!
string简短的回答是循环中的数据类型for确实是字符串。但是,您没有使用任何本机 String 方法来计算长度,因此我相当确定您已经满足要求(无论如何对于 length 属性)。
也就是说,我同意 @cwolves 的观点,因为在不违反“不允许使用任何内置字符串方法或属性”。
就您的初始化循环而言,感谢您没有违反要求,但它不起作用。你将得到一个像这样的数组:
[
"0",
"1",
"2",
"3",
"4"
]
Run Code Online (Sandbox Code Playgroud)
为了避免超长的帖子,这里有一个部分实现的快速而肮脏的版本的小提琴:http://jsfiddle.net/CtF2Q/
小提琴注意事项:
以下方法未实现:
以下方法仅部分实现: