使用对象作为其他对象的蓝图

时间:2014-03-17 03:09:06

标签: javascript object

我创建了一个简单的对象,希望将其用作其他对象的蓝图。但事情进展不顺利。任何人都可以找出原因吗?当我单击一个按钮时,它应该更改div的innerHTML以显示新对象的属性!

这是一个小提琴

var objekt = {
    name : "olsi",
    surname : "Angjellari",
    kot : function () {
        return this.name + this.surname
    },
    print : function () {
        id.innerHTML = this.kot()
    }
};

http://jsfiddle.net/cTRuL/

2 个答案:

答案 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()。您可能希望在.printobjekt类型的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();