为什么parseInt不是一个方法?

时间:2012-02-21 14:49:57

标签: javascript

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

功能:

var i = parseInt(X);

方法:

var i = X.parseInt();

1 个答案:

答案 0 :(得分:13)

修改

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

结束修改

parseInt是全局对象的一种方法。在浏览器中,全局对象为window。您可以调用window.parseInt(),但JS引擎可以快捷调用全局方法。

也就是说,它有一些成本,因为引擎必须扫描范围链,寻找parseInt的定义。一般来说,如果我在一个范围内单独调用这样的方法,我会在全局范围内引用它:

var foo = function (someString) {
    var bar;

    // ...

    bar = window.parseInt(someString, 10);

    // ...
};

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

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

    // ...

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

    // ...
};