我的程序必须使用字符串prototype属性,即使它是不必要的。每当单击提交按钮时,都会导致一堆未定义的。 在show_alphabet函数中,我有一个名为“str”的变量,一个大写字母的字母串。
在show_alphabet函数中,我有使用String对象的prototype属性添加名为“sendArray”的方法的代码,并为此(sendArray)分配一个返回split()方法的函数。 split()方法将拆分字母串。
我试图将“str”中的字母显示为一个数组,其中包含句点冒号,后跟每个字母,并将每个字母放在一个单独的行上。 例如: A: B: C: ...
虽然我意识到不必使用字符串prototype属性,但我的任务指南说必须使用它们。以下是我的代码的相关部分。
<form>
<button type = "button" onclick = show_alphabet()>submit</button>
</form>
<script type "text/javascript">
function show_alphabet() {
var str = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
String.prototype.sendArray = function() {
return this.split("");
}
var arr = str.sendArray
for (i = 0; i<str.length- 1; i++) {
str.split(":<br />");
document.write(arr[i]);
}
}
答案 0 :(得分:0)
这:var arr = str.sendArray
应该是:var arr = str.sendArray()
否则您将函数分配给arr
而不是函数结果。
示例:
var str = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
String.prototype.sendArray = function() {
return this.split("");
}
var arr = str.sendArray();
var arrLength = arr.length; // length of the array should be calculated before the loop, or it will be calculated on every interaction.
for (i = 0; i<arrLength; i++) {
arr[i]+=":<br />"
console.log(arr[i]);
}
&#13;
答案 1 :(得分:0)
更改代码部分
var arr = str.sendArray
到
var arr = str.sendArray();
这样你实际上是在分配函数调用的返回值,而不是函数本身。