我创建了一个简单的对象,希望将其用作其他对象的蓝图。但事情进展不顺利。任何人都可以找出原因吗?当我单击一个按钮时,它应该更改div的innerHTML以显示新对象的属性!
这是一个小提琴
var objekt = {
name : "olsi",
surname : "Angjellari",
kot : function () {
return this.name + this.surname
},
print : function () {
id.innerHTML = this.kot()
}
};
答案 0 :(得分:0)
有很多问题:
如果你想这样做:
var dana = new objekt();
然后,objekt
必须是一个函数,而不仅仅是一个对象,因为一个对象不是一个构造函数,只有一个函数可以是一个构造函数。这是一种方法:
function objekt() {
this.name = "olsi";
this.surname = "Angjellari";
};
objekt.prototype = {
kot : function () {
return this.name + this.surname
},
print : function () {
id.innerHTML = this.kot()
}
};
其次,如果您要在HTML中添加函数名,那么在您的jsFiddle中,那些函数必须是全局的。要使您的代码在jsFiddle中全局化,您必须将左上角设置设置为&#34;无包装 - <body>
&#34;或&#34;没有换行<head>
&#34;。正如您使用jsFiddle一样,您的代码是在onload处理程序中定义的,因此无法通过HTML中的函数调用来访问。
第三,一旦您将objekt
变为修复上一个问题的函数,就无法直接调用objekt.print()
。您可能希望在.print
或objekt
类型的dana
类型的实际对象上调用boi
。
你可以在这里看到所有工作:http://jsfiddle.net/jfriend00/7TbEx/
答案 1 :(得分:0)
您想要创建一个构造函数,以便您可以像使用
一样使用new运算符创建实例function objekt(name,surname){
this.name = name||"olsi";
this.surname = surname||"Angjellari";
this.kot = function () {
return this.name + this.surname
};
this.print = function () {
id.innerHTML = this.kot()
};
}
var obj = new objekt();
var obj2 = new objekt("First","Last");
obj.print();
obj2.print();
您也可以通过原型制作这些
function objekt(){}
objekt.prototype.name = "";
objekt.prototype.surname = "";
objekt.prototype.kot = function(){
return this.name + this.surname;
};
objekt.prototype.kot = function(){
id.innerHTML = this.kot();
};
var obj = new objekt();
obj.name = "First";
obj.surname = "Last";
var obj2 = new objekt();
obj2.name = "Last";
obj2.surname = "First";
obj.print();
obj2.print();