Функции JavaScript являются объектами и имеют два полезных метода для вызова функции:
Function.call(scope, [arg1, ...])
Function.apply(scope, args)
Вы можете использовать один из них для вызова родительской реализации, явно передав this
в качестве параметра scope
, так что в родительской реализации this
ссылается на дочерний объект:
var o1 = {
name : "One",
init : function() {
alert("o1: " + this.name);
}
};
var o2 = Object.create(o1);
o2.name = "Two";
o2.init = function() {
o1.init.call(this);
alert("o2: " + this name);
};
Это предупредит: o1: Two
и o2: Two
.