Javascript 对象原型对Easeljs的干扰
我正在设置一个小助手函数,如下所示:Javascript 对象原型对Easeljs的干扰,javascript,prototype,easeljs,Javascript,Prototype,Easeljs,我正在设置一个小助手函数,如下所示: if (!Object.prototype.__construct) { Object.prototype.__construct = function() { if (typeof arguments[0] !== 'object' || arguments.length === 0) return; for (var name in arguments[0]) { if (arguments[0].hasO
if (!Object.prototype.__construct) {
Object.prototype.__construct = function() {
if (typeof arguments[0] !== 'object' ||
arguments.length === 0) return;
for (var name in arguments[0]) {
if (arguments[0].hasOwnProperty(name))
this[name] = arguments[0][name];
}
}}
if (!Object.prototype.__)
Object.prototype.__ = Object.prototype.__construct;
它的调用方式如下:
function Foo(props) {
this.__(props); // or this.__construct(props);
...
}
var foo = new Foo({a:1,b:2,c:3});
正如您所看到的,它只是一个简单的构造函数。但是,当将它与EaselJS一起使用时,特别是SpriteSheet()
我得到了一个uncaughttypeerror的错误:无法调用未定义的
的方法“slice”。下面是一段代码,说明了问题的起因:
var ss = new SpriteSheet({
images: ...,
frames: {
...
},
animations: {
walk: [0, 1, "walk", 8] // <-- Error caused here.
}
});
var ss=新精灵表({
图片:。。。,
框架:{
...
},
动画:{
walk:[0,1,“walk”,8]//扩展对象
原型是个坏主意。@zzzzBov您能详细说明一下或将我与一些参考资料联系起来吗?经过简短的搜索,我发现,“扩展Object.prototype‘是Verboten’出于某些或所有这些原因,JavaScript社区多年来一直认为Object.prototype扩展是禁忌……”基本上,如果您开始覆盖Object.prototype
,您可以期待库(如jQuery)开始失败,查看你的代码的开发人员开始讨厌你。谢谢你的参考。我想也是出于同样的原因。但是这给我的小项目带来的便利真的很好。除了不这样做之外,还有什么解决办法吗,哈?