かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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