gpt4 book ai didi

javascript - 动力学对象的新属性?

转载 作者:行者123 更新时间:2023-11-29 22:10:50 25 4
gpt4 key购买 nike

如何通过函数向 Kinetic 对象添加/扩展属性?

让我进一步解释。我可以像这样创建一个新的 Kinetic 对象

var car = new Kinetic.Rect({
width: 15,
height: 10});

//稍后添加自定义属性。符号

car.brand = "宝马";

但是如果我想通过这样的函数制作运动物体

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;
}

那当然不是动能物体。但是我该怎么做呢?是否可以扩展基类以保存自定义值?

最佳答案

它可以被认为是开箱即用的相对丑陋的,但是是的

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 实例的属性的汽车。


当你从某处提取公共(public)代码时,它会变得更干净一些:

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;
})();

关于javascript - 动力学对象的新属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18102389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com