我有在JavaScript創建類的類定義方法:如何解決在JavaScript這個類的定義,以支持instanceof運算符
var Class = function() {
var clazz = null,
pros = {};
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (typeof arg == "function") arg = arg.prototype;
else {
arg.init && (clazz = arg.init, delete arg.init)
}
for (var p in arg) pros[p] = arg[p];
}
clazz.prototype = pros;
return clazz;
};
var Person = Class({
init: function(name) {
this.name = name;
},
say:function(){
console.info(this.name);
}
});
var Man = Class(Person, {
init: function(name) {
Person.apply(this, arguments);
this.gender = 'man'
}
});
var m = new Man('kk');
console.info(m instanceof Man);
console.info(m instanceof Person);
但是,它不支持instanceof
操作。
任何想法解決它?
這解釋的instanceof是如何工作的:https://developer.mozilla.org/en/JavaScript/Reference/Operators/instanceof – 2012-02-14 11:25:22
或者這裏:http://es5.github.com/#x11.8.6 – 2012-02-14 11:26:25
我讀過這個。我嘗試將'arg = arg.prototype'更改爲'arg = new arg()'。這是行不通的。 – hguser 2012-02-14 11:28:20