かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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(); // ばさばさっ