为什么parseInt不是一个方法?

Phi*_*enn 9 javascript

为什么parseInt是一个函数而不是一个方法?

功能:

var i = parseInt(X);
Run Code Online (Sandbox Code Playgroud)

方法:

var i = X.parseInt();
Run Code Online (Sandbox Code Playgroud)

JAA*_*lde 13

编辑:

我不是百分之百确定为什么parseInt它不是一种方法String,除了它可以在任何东西上运行.似乎它可能是其中的一部分,Math但它也不是真正的数学运算.

结束编辑

parseInt是一个全局对象的方法.在浏览器中,全局对象是window.你可以调用window.parseInt(),但JS引擎允许你快捷调用全局方法.

也就是说,它有一些成本,因为引擎必须扫描范围链,寻找定义parseInt.通常,如果我在一个范围内调用这样的方法,我将从全局引用它:

var foo = function (someString) {
    var bar;

    // ...

    bar = window.parseInt(someString, 10);

    // ...
};
Run Code Online (Sandbox Code Playgroud)

但是,如果我的代码需要对范围内的方法进行多次调用,我将其本地化并使用引用:

var foo = function (someString, someOtherString) {
    var parseInt = window.parseInt,
      bar,
      baz;

    // ...

    bar = parseInt(someString, 10);
    baz = parseInt(someOtherString, 10);

    // ...
};
Run Code Online (Sandbox Code Playgroud)

  • 我想他可能会问为什么它不是`Number`的方法. (3认同)
  • 是的,也许他是 - 虽然我认为它更接近"为什么不是`parseInt`是一种`String`的方法?". (2认同)