1

少し時間をつぶすために、キャンバス用のjavascriptで小さなShapeクラスを作成しています。以下のようなことができないかと思っていたのですが、

var Shape = function (shape) {

     // pseudo code
     if (shape is a prototype function of Shape) {
         shape();
     }
}

Shape.prototype.quad = function () {

}

したがって、上記の場合、唯一の有効な文字列quadは、定義された唯一のプロトタイプ関数であるためです。

これは可能ですか?

4

3 に答える 3

0

Shape がコンストラクターであると仮定して、これを試してみてください。これは、標準ではありませんが一般的に利用可能なprotoプロパティを使用します。

var Shape = function (shape) {
    for (var functionName in this) {
        if (this.__proto__.hasOwnProperty(functionName)) {     
            if (this[functionName]  ===  shape) {
                shape.call(this);
            }
        }            
    }
}

Shape.prototype.quad = function () { console.log("quad")}
new Shape(Shape.prototype.quad)
于 2013-04-05T23:44:00.960 に答える