我有这个函数(类),我定义了一个原型函数。
function testit(t,l, w, h, c, p) {
this.div;
this.obj = { "top": t, "left": l, "width": w, "height": h, "color": c };
}
testit.prototype.showit = function () {
this.div = $("<div />")
.css({
"position": "absolute",
"top": this.obj.top,
"left": this.obj.left,
"width": this.obj.width,
"height": this.obj.height,
"border": "1px solid " + this.obj.color
})
.appendTo(p);
}
运行以下代码时 -
var aa;
aa = new testit(100, 100, 100, 100, "#CCCCCC", "body");
aa.showit();
我收到以下错误 -
原型定义有什么问题?
答案 0 :(得分:0)
代码不会导致您列出的错误(请参阅我在问题中添加的代码段),除非您有一个全球p
变量不是字符串或DOM元素,我认为它可以。
确实存在不同错误:p
未在您使用它时定义。您需要在构造函数中记住p
(或许this.p = p;
),然后在调用this.p
时使用该属性(appendTo
):
function testit(t,l, w, h, c, p) {
this.div;
this.obj = { "top": t, "left": l, "width": w, "height": h, "color": c };
this.p = p;
}
testit.prototype.showit = function () {
this.div = $("<div />")
.css({
"position": "absolute",
"top": this.obj.top,
"left": this.obj.left,
"width": this.obj.width,
"height": this.obj.height,
"border": "1px solid " + this.obj.color
})
.appendTo(this.p);
}
var aa;
aa = new testit(100, 100, 100, 100, "#CCCCCC", "body");
aa.showit();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
&#13;
如果您在(比方说)事件回调中调用showit
,您还必须小心this issue。