將功能相近的方法寫入同一個對象中,是一個很好的編程習慣,便于后期的維護和前期的開發.
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('嗷');