Javascript 将一个对象用作其他对象的蓝图

Javascript 将一个对象用作其他对象的蓝图,javascript,object,Javascript,Object,我创建了一个简单的对象,希望用作其他对象的蓝图。但有些事情进展不顺利。有人能找出原因吗?当我单击一个按钮时,它应该更改div的innerHTML以显示新对象的属性 这是一把小提琴 var objekt = { name : "olsi", surname : "Angjellari", kot : function () { return this.name + this.surname }, print : function () {

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

这是一把小提琴

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

有许多问题:

当您想要执行以下操作时:

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()
    }
};
其次,在JSFIDLE中,如果要将函数名放入HTML中,那么这些函数必须是全局函数。要使代码在JSFIDLE中成为全局的,必须将左上角的设置设置为No wrap-in或No wrap-in。当您使用JSFIDLE时,您的代码是在onload处理程序中定义的,因此无法通过HTML中的函数调用访问

第三,一旦将objekt变成一个函数来修复之前的问题,那么就不能直接调用objekt.print。您可能想调用.print在类型为objekt的实际对象上,例如dana或boi


您可以在这里看到所有这些都在工作:

您想要创建一个构造函数,这样您就可以像尝试一样使用新操作符创建实例

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();

我只是将代码粘贴到小提琴上,它在我的电脑上也不起作用。但是,感谢您对如何在使用小提琴时纠正错误的见解。现在它的效果非常好!谢谢!