不确定我做错了什么,但我在控制台中不断收到以下消息。任何指导将不胜感激。如果你们对如何处理这个问题有更好的建议请告诉我!
未捕获的TypeError:undefined不是函数
var animEngine = {};
animEngine.init = function () {
'use strict';
var elem = function(){};
elem.prototype = {
objType : '',
objClass : '',
objBackground: '',
objWidth: '',
objHeight: ''
}
var squareElem = Object.create(elem, {
objType : {value: 'div'},
objClass : {value: 'squareElement'},
objBackground : {value: 'red'},
objWidth : {value: '200px'},
objHeight : {value: '200px'}
});
Function.prototype.method = function (name, fn) {
this.prototype[name] = fn;
return this;
}
squareElem.
method('createObj', function () {
this.element = document.createElement(this.objType);
document.getElementsByTagName('body')[0].appendChild(this.element);
this.element.className = this.objClass;
this.element.style.height = this.objHeight;
this.element.style.width = this.objWidth;
this.element.style.backgroundColor = this.objBackground;
return this;
}).
method('moveObj', function (x,y) {
this.element.style.position = 'relative';
this.element.style.left = x + 'px';
this.element.style.top = y + 'px';
return this;
});
squareElem.createObj().moveObj('100px', '100px');
};
animEngine.init();
答案 0 :(得分:0)
你有一个错字:
var squareElem
应该是
var squareElement
答案 1 :(得分:0)
因为你没有使用squareElem。您正在使用未定义的squareElement
您的代码是:var squareElem = Object.create
答案 2 :(得分:0)
您错误地使用了Object.create。假设您希望新对象继承自 elem.prototype (即好像它是 elem 的实例),那么传递的对象应该是要用作的对象新对象的[[Prototype]]
,即它应该是 elem.prototype ,而不是 elem 。
另外,当你写:
Function.prototype.method
然后方法将由Function实例(即函数)继承。然后你打电话:
squareElem.method
但 squareElem 是由 Object.create 创建的普通对象,因此它不是函数,因此不会从 Function.prototype 并且没有方法方法。