【Javascript】このCallメソッドが何をしているのか教えて頂きたいです。
Javascriptを学習中のものです。
ある参考書でプロトタイプチェーンについて読んでいたところ、以下のようなコードの記載がありました。
※コードはES2015以前であることを前提に記載されています。
var Animal = function() {};
Animal.prototype = {
walk: function() {
console.log("トコトコ");
}
};
var Dog = function() {
Animal.call(this);
};
Dog.prototype = new Animal();
Dog.prototype.bark = function() {
console.log("わんわん");
};
var d = new Dog();
d.walk();
d.bark();
お聞きしたい内容はこのソースの以下の箇所です。
var Dog = function() {
Animal.call(this);
};
このCallメソッドは一体何をしているのでしょうか。
参考書の説明では、
「Animalコンストラクターを現在のthisで呼び出しなさい」という意味です。
ここではコンストラクターが空なので、なくても問題ありません。
という説明だけがあるのですが、
現在のthisで呼び出しなさい という説明の意味がわからなく...。
現在自分の認識では、以下のように認識しております。
①callメソッドは対象のオブジェクトに対し、thisの参照先を指定することができるメソッドである。
②thisは関数内で使用した際はグローバルオブジェクト、もしくはundefinedを示す。
※実際、Animal.call(this)をconsoleで出力したらundefined
でした。
よって、このcallメソッドではundefinedかグローバルオブジェクトのいずれかしか入らないような気がしており、正直何がしたいコードなのか理解ができていないです。
何卒、ご教示の程宜しくお願い致します。