我知道你可以設置一個新的對象的原型使用此功能(read mozzilla docu) ,但如果它是一個對象字面這樣沒有的Object.create還可以創建自己的屬性
return Object.create(this);
中使用它也創造了自己的屬性
我也知道從字面克拉斯至極這種方法只複製實例方法
var subclass = function() { };
subclass.prototype = parent.prototype;
klass.prototype = new subclass;
主要是我感興趣的是的Object.create方法
EDIT
var Klass = {
init: function(){},
prototype: {
init: function(){}
},
create: function(){
var object = Object.create(this);
console.log('object with class create');
console.log(object);
console.log("object's parent is this");
console.log(this);
object.parent = this;
object.init.apply(object, arguments);
console.log('returned object from create');
console.log(object);
return object;
},
inst: function(){
var instance = Object.create(this.prototype);
console.log('de instance na object create');
console.log(instance);
instance.parent = this;
instance.init.apply(instance, arguments);
console.log('arguments in inst');
console.log(arguments);
return instance;
},
proxy: function(func){
var thisObject = this;
return(function(){
return func.apply(thisObject, arguments);
});
},
include: function(obj){
var included = obj.included || obj.setup;
for(var i in obj)
this.fn[i] = obj[i];
if (included) included(this);
},
extend: function(obj){
var extended = obj.extended || obj.setup;
for(var i in obj)
this[i] = obj[i];
if (extended) extended(this);
}
};
Klass.fn = Klass.prototype;
Klass.fn.proxy = Klass.proxy;
感謝,理查德
「*複製實例方法*」 - 什麼? – Bergi 2013-03-27 15:47:41
所以'create'應該創建一個子類,'inst'應該創建該類的實例?爲什麼類需要一個'init'方法?你的問題是什麼,你想達到什麼目的? – Bergi 2013-03-27 19:07:59