call & apply
call
和 apply
作用基本相同,都可以让一个对象引用另一个对象或它的方法,两者唯一的不同是 call
接受函数参数的方式是一个个列出来,apply
接受函数参数的方式是一个数组。
call
的定义:
1 | fun.call(thisArg[, arg1[, arg2[, ...]]]) |
apply
的定义:
1 | fun.apply(thisArg, [argsArray]) |
call
的继承
1 | function Animal(name){ |
apply
的继承
1 | function Class0() { |
call
和 apply
的继承方法都不能继承原型链。
1 | function Animal(name){ |
原型继承
1 | var Mammal = function(name) { |
复杂点例子:
1 | function Mammal(name) { |
haveABaby
继承还可以这样写:
1 | Mammal.prototype.haveABaby = function() { |
Object.create()
1 | // Shape - superclass |
自制继承方法
来自 OOP:
1 | Function.prototype.inheritsFrom = function(parentClassOrObject) { |
参考: