代码:
function CreateDiv(D) {
D.width = this.width;
D.height = this.height;
D.position = "absolute";
D.bottom = 0;
D.right = function () { };
D.id = Math.floor((Math.random() * 10) + 1);
D.data = function () {
return "this is data of Div" + D.id;
};
D.create = function () {
var divToAppend = "<div id='" + D.id + "' style='border:1px solid black;width:20;height:20;' >" + D.data + "</div>";
return divToAppend;
// $("#Container").append(divToAppend);
};
}
function NewChat() {
var divv = new CreateDiv({width:200,height:200});
alert(divv.create); // undefiend
}
谁能告诉我我做错了什么?
答案 0 :(得分:2)
您在课程定义中混淆了D.
和this.
:
function CreateDiv(D) {
this.width = D.width;
this.height = D.height;
this.position = "absolute";
this.bottom = 0;
this.right = function () { };
this.id = Math.floor((Math.random() * 10) + 1);
this.data = function () {
return "this is data of Div" + this.id;
};
this.create = function () {
var divToAppend = "<div id='" + this.id + "' style='border:1px solid black;width:20;height:20;' >" + this.data + "</div>";
return divToAppend;
// $("#Container").append(divToAppend);
};
}
使用new
运算符和函数创建新对象时,在该构造函数中使用this
引用创建的对象。
在您的代码中,您只需扩展给定的参数D
,该参数永远不会返回。
答案 1 :(得分:0)
而不是使用D.create
;
你应该使用this.create
this.create = function () {
var divToAppend = "<div id='" + D.id + "' style='border:1px solid black;width:20;height:20;' >" + D.data + "</div>";
return divToAppend;
// $("#Container").append(divToAppend);
};