JavaScriptで単純な拡張可能な「クラス」を作成しようとしていますが、プロトタイプでプロパティを設定すると、プロトタイプが未定義であることがわかります:
Class = {};
Class.extend = function(obj) {
var result = Object.create(this);
if (obj) {
for (var key in obj) {
if(typeof obj[key] == 'function'){
console.log(result);
result.protorype[key] = obj[key];
}else{
result[key] = obj[key];
};
};
result.prototype.constructor = result;
}
return result;
}
var a = Class.extend({
username: "matteo",
password: "nn te la dico",
getByUsername: function() {
return this.username;
}
});
console.log(a, Class.isPrototypeOf(a));
「a」を定義するときに渡されたプロパティ「getByUsername」を設定しようとすると、問題が発生します。コンソールを見ると、次のように報告されます。
Uncaught TypeError: Cannot set property 'getByUsername' of undefined
ログに記録された「結果」には、「ユーザー名」と「パスワード」のプロパティがあります。
PSそれはIE> 8でのみ動作します
ここにフィドルがありますhttp://jsfiddle.net/paglia_s/z62eA/