030. js 对象,构造函数,工具函数 - cwy007/tips-and-skills GitHub Wiki

1. js 中的一些术语

String 对象
Number 
Boolean
Array 
Object
Regexp
  • new String 构造函数

  • String 工具函数

  • 对象方法

  • 对象的实例方法

  • 将方法部署到对象上

Number.prototype.toString()

Number对象部署了自己的toString方法,用来将一个数值转为字符串形式。

2. Number.prototype.toExponential()

toExponential方法用于将一个数转为科学计数法形式。

// 科学计数法中的 e 指的是英文 exponential (指数)的第一个字母?
// e 的值为 10
(10).toExponential()  // "1e+1"

3.Number.prototype.toPrecision()

toPrecision方法用于将一个数转为指定位数的有效数字。

(12.34).toPrecision(1) // "1e+1"
(12.34).toPrecision(2) // "12"
(12.34).toPrecision(3) // "12.3"
(12.34).toPrecision(4) // "12.34"
(12.34).toPrecision(5) // "12.340"

precision 精度,指定位数的有效数字 rails Model中设定decimal十进制验证时,有用到precision (有效数字的位数),scale(小数点后的位数)

4.自定义方法

js 中实例方法定义在prototype对象上

与其他对象一样,Number.prototype对象上面可以自定义方法,被Number的实例继承。

Number.prototype.add = function (x) {
  return this + x;
};
js:   对象 与 实例
ruby:类别 与 实例

小数点 VS 点运算符

8['add'](2) // 10

上面代码中,调用方法之所以写成8['add'],而不是8.add,是因为数值后面的点,会被解释为小数点,而不是点运算符。将数值放在圆括号中,就可以使用点运算符调用方法了。

(8).add(2) // 10

this 指函数的运行环境,上下文

Number.prototype.iterate = function () {
  var result = [];
  for (var i = 0; i <= this; i++) {
    result.push(i);
  }
  return result;
};

(8).iterate()
// [0, 1, 2, 3, 4, 5, 6, 7, 8]

数值的原型对象 Number.prototype, 自定义方法定义的地方,数值本身无法定义属性

var n = 1;
n.x = 1;
n.x // undefined

这是因为一旦被调用属性,n就自动转为Number的实例对象,调用结束后,该对象自动销毁。 所以,下一次调用n的属性时,实际取到的是另一个对象,属性x当然就读不出来。

link:http://javascript.ruanyifeng.com/stdlib/number.html