我从一本书中得到了这个练习(没有解决方案):
想象一下String()构造函数不存在。创建一个构造函数 MyString()尽可能接近String()。你不是 允许使用任何内置的字符串方法或属性,并记住这一点 String()不存在。您可以使用此代码来测试构造函数:
>>> 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;
我不确定的是for-in循环。你能告诉我那个循环中 string 变量的数据类型是什么?是那种数组还是我用它作为字符串(这是我确实打破了要求)? 非常感谢!
答案 0 :(得分:0)
简短的回答是string
循环中for
的数据类型确实是String。但是,您没有使用任何本地String方法来计算长度,因此我非常确定您已满足要求(无论如何都是长度属性)。
那就是说,我同意@cwolves的意思是,将一个不同的数据类型传递给你的构造函数是非常困难的(假设JavaScript只有这么少)而不违反"你和#39;不允许使用任何内置的字符串方法或属性"。
就你的初始化循环而言,不要违反要求,但它不会起作用。你得到的是这样一个数组:
[
"0",
"1",
"2",
"3",
"4"
]
为了避免超长的帖子,这里有一个快速和脏的部分实现版本的小提琴:http://jsfiddle.net/CtF2Q/
小提琴的注意事项:
未实施以下方法:
以下方法仅部分实施: