かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

WinJSでクラスの継承

WinJS.Class.deriveを使って継承もできるんですね。

使い方は第一引数に継承、第二引数にコンストラクタ、第三引数にインスタンスメソッド、第四引数にスタティックメソッドになるみたいです。ということで、オブジェクト指向でイマイチイメージが使えないAnimalクラスとか使ってやってみようと思います。

// 動物
var Animal = WinJS.Class.define(
    // 声
    function (voice) { this.voice = voice; },
    {
        // 鳴く
        bark: function () { console.log(this.voice); }
    });

// 犬の鳴き声はわんわん
var Dog = WinJS.Class.derive(
    Animal,
    function () { this.voice = "わんわん"; });

// 鳥はちゅんちゅん
var Bird = WinJS.Class.derive(
    Animal,
    function () { this.voice = "ちゅんちゅん"; },
    {
        // 鳥は空を飛ぶ
        fly: function () { console.log("ばさばさっ"); }
    });

// 犬を鳴かせてみる
var d = new Dog();
d.bark(); // わんわん

// 鳥を鳴かせて飛ばしてみる
var b = new Bird();
b.bark(); // ちゅんちゅん
b.fly(); // ばさばさっ