将功能相近的方法写入同一个对象中,是一个很好的编程习惯,便于后期的维护和前期的开发.
foo1
var fooObj = {foo1: function() {console.log('foo1');return this;}
}
fooObj.foo1();
- 此有一个对象: fooObj
- 它有一个方法: foo1()
- foo1打印了一个字符串’foo1’,然后返回了当前的执行环境.即fooObj.
下面从数学的角度来证明一下,返回的是fooObj
// 其实很简单,只需将fooObj.foo1()打印出来
console.log(fooObj.foo1());
- 按下面的方式可能会更明显一些
console.log(fooObj.foo1() === fooObj);
- 注意:foo1后面使用 箭头函数的话,返回的将不会是fooObj对象了(而是一个总体对象{}).
var fooObj = {foo1: () => {console.log('foo1');return this;}
}
console.log(fooObj.foo1() === fooObj, fooObj.foo1());
链式调用foo1,foo2
var fooObj = {foo1: function() {console.log('foo1');return this;},foo2: function() {console.log('foo2');return this;}
}
fooObj.foo1().foo2();
链式调用带参数的foo1,foo2
var fooObj = {foo1: function(a) {console.log(a);return this;},foo2: function(a) {console.log(a);return this;}
}
fooObj.foo1('喵').foo2('咩');
原型链式调用foo1,foo2
var FooObj = function() {};
FooObj.prototype.foo1 = function(a) {console.log(a)return this;
}
FooObj.prototype.foo2 = function(a) {console.log(a, "呜~");return this;
}var f = new FooObj();
f.foo1('喵').foo2('嗷');// 注: 此时需要使用new,来将f指向FooObj的原型..否则无法调用foo方法.
原型对象形式的链式调用
var FooObj = function() {};
FooObj.prototype = {foo1: function(a) {console.log(a);return this;},foo2: function(a) {console.log(a, '呜呜呜呜~!!!~');}
}var f = new FooObj();
f.foo1('喵').foo2('嗷');