如何通过函数向Kinetic对象添加/扩展属性?
让我进一步解释。我可以像这样创建一个新的Kinetic对象
var car = new Kinetic.Rect({
width: 15,
height: 10});
//以后添加自定义属性。符号
car.brand = "BMW";
但是如果我想通过像这样的函数来制作动物物体
var Car1 = new Car(15, 10, "BMW");
var Car2 = new Car(10, 10, "Volvo");
function Car(width, height, brand) {
this.width = width;
this.height = height;
this.brand = brand;
}
那当然不是动力学的对象。但是我怎么能这样做呢? 是否可以扩展基类以保存自定义值?
答案 0 :(得分:2)
它可以被认为是相对丑陋的开箱即用,但是是的
var Car = (function() {
var _super = Kinetic.Rect.prototype,
method = Car.prototype = Object.create(_super);
method.constructor = Car;
function Car(opts, brand) {
_super.constructor.apply(this, arguments);
this.brand = brand;
}
method.drive = function() {
//lawl
};
return Car;
})();
var bmw = new Car({}, "BMW");
var volvo = new Car({}, "Volvo");
问问自己,这辆车是否是动力学矩形。对我来说,这种继承没有任何意义,我宁愿拥有一辆像.boundingBox
这样的属性引用Rectangle
实例的汽车。
当您从某处提取公共代码时,它会变得更清晰:
var oop = {
inherits: function(Child, Parent) {
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
return Parent.prototype;
}
};
然后代码看起来像
var Car = (function() {
var _super = oop.inherits(Car, Kinetic.Rect);
function Car(opts, brand) {
_super.constructor.apply( this, arguments );
this.brand = brand;
}
return Car;
})();