var str = 'qwer';
String.prototype.charAt = function(){};
alert( str.charAt(2) );
这段代码的运行结果,为什么是undefined?
str.charAt(2)产生的包装对象,不就是要从原型String.prototype找charAt方法
var str = 'qwer';
String.prototype.charAt = function(){};
alert( str.charAt(2) );
这段代码的运行结果,为什么是undefined?
str.charAt(2)产生的包装对象,不就是要从原型String.prototype找charAt方法
参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。
在这段代码中,str.charAt(2)
的运行结果确实是 undefined,但这并不是因为包装对象找不到 charAt
方法。实际上,您重写了原生的 String.prototype.charAt
方法,将其替换为一个空函数:
String.prototype.charAt = function(){};
这样一来,当调用 str.charAt(2)
时,由于您已经重写了 charAt
方法,所以它将执行这个空函数,而这个空函数没有返回任何值(即返回了 undefined)。
正确的原生 charAt
方法会接收一个参数(在这个例子中是索引 2),并返回该索引位置的字符。但在您提供的代码中,由于被替换为了空函数,因此无法得到索引 2 处的字符 'w',而是得到了 undefined。