分析如下:
- 接受参数为number的话,返回其本身
- 接受参数非number && 非string的话,返回NaN
- 接受参数为string的话,第一位为0的话,返回0,一直解析到非number的为止
- 自动去除开始的空格
- 支持链式调用,即封装到string的原型上
根据分析,代码如下:
代码语言:javascript复制String.prototype.parseInt = function () {
if (typeof this === "number") {
return this;
} else if (typeof this === "string") {
let newStr = this.replace(/s*/, '');
if (!newStr.length) {
return NaN;
} else if (!Number.isFinite(newStr[0] * 1)) {
return NaN;
} else if (newStr[0] === 0) {
return 0;
} else {
let arr = [];
for (let list of newStr) {
if (list !== '' && Number.isFinite(list * 1)) {
arr.push(list);
} else {
break;
}
}
if (arr.length) {
return arr.join("");
} else {
return NaN;
}
}
} else {
return NaN;
}
}