029. js 标准库 Object , Array - cwy007/tips-and-skills GitHub Wiki

1.“构造函数的方法”和“实例对象的方法”。

// 构造函数的方法 类似于 ruby 中的类class方法
Object.print = function(o){ console.log(o) };
var o = new Object();
Object.print(o)  // Object

// 实例对象的方法 类似于 ruby 中的实例instance / object方法
Object.prototype.print = function(){ console.log(this)};
var o = new Object();
o.print()

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

2. 方法的回调函数

[1, 2, 3].map(function(elem, index, arr) {
  return elem * index;
});
// [0, 2, 6]

上面代码中,map方法的回调函数的三个参数之中,elem为当前成员的值,index为当前成员的位置,arr为原数组([1, 2, 3])

3. 回调函数中 this 关键字所指的对象

var arr = ['a', 'b', 'c'];

[1, 2].map(function(e){
  return this[e];
}, arr)
// ['b', 'c']

上面代码通过map方法的第二个参数,将回调函数内部的this对象,指向arr数组。

4.构造函数

// 构造函数
var Obj = function () {
  this.MAX = 3;
};

// 过滤方法 | 参数方法
var myFilter = function (item) {
  if (item > this.MAX) {
    return true;
  }
};

var arr = [2, 8, 3, 4, 1, 3, 2, 9];
arr.filter(myFilter, new Obj())
// [8, 4, 9]

上面代码中,测试函数myFilter内部有this对象,它可以被filter方法的第二个参数绑定。上例中,myFilter的this绑定了Obj对象的实例,返回大于3的成员。

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