JavaScript:为什么有些函数不是方法?

标签 javascript function methods

有一次学生问我为什么要写:

  • parseInt(something)
  • something.toLowerCase()

也就是说,为什么一个将变量作为参数,而另一个将变量应用于变量。

我解释说虽然 toLowerCase 是字符串对象的一种方法,但 parseInt 并不是那样设计的。好的,所以它是 window.parseInt,但这只是使它成为不同对象的方法。

但这让我感到不一致——为什么一些字符串或其他函数不是它们对应对象的方法?

问题是为什么? parseInt 和其他函数不是方法是否有技术原因,或者这只是一个历史怪癖?

最佳答案

一般来说,Javascript 的设计很匆忙,因此质疑每个单独的设计决策并不总是有效地利用您的时间。

话虽如此,特别是对于 parseInt,原因很容易解释:它几乎可以接受任何任意类型,例如:

parseInt(undefined)  // NaN

由于您无法实现 undefined.parseInt(),唯一的方法就是将其实现为静态函数。

从 ECMAScript 2015 开始,parseInt 已被映射到 Number.parseInt 中,可以说它比在 window 中更有意义。为了向后兼容,window.parseInt 继续存在。

关于JavaScript:为什么有些函数不是方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41778118/

相关文章:

java - 泛化二叉树遍历的 Action ?

Javascript for 循环提前结束

javascript - Kendo 编辑器 -thumbnailUrl 的功能不起作用

javascript - Webpack 在 vendor chunk 中使用 node_modules 而没有明确声明它们

javascript - 如何在 d3 中从 v4 转换为 v3

javascript - 功能单元测试

c - 函数中分配的内存的返回地址

java - 什么是 addNotify();?

javascript - javascript中的对象方法和缩短的对象方法语法有什么区别?

javascript - console.log 与返回 : different results (JS)