Javascript 实例化多个对象
在Javascript中,我创建了如下对象:Javascript 实例化多个对象,javascript,object,Javascript,Object,在Javascript中,我创建了如下对象: var testObject = { value: "this is my initial value", setup: function() { value: "foo" } }; 现在,我希望能够实例化此对象,因此我尝试以下方法: var myFirstObject = new testObject(); var mySecondObject = new testObject(); 因此,当我调用.s
var testObject = {
value: "this is my initial value",
setup: function() {
value: "foo"
}
};
现在,我希望能够实例化此对象,因此我尝试以下方法:
var myFirstObject = new testObject();
var mySecondObject = new testObject();
因此,当我调用
.setup()
时,它将仅更改引用的新创建对象的值。我怎样才能做到这一点?此代码似乎不起作用。您使用的对象表示法可以与静态类进行比较。
以下是您试图实现的目标的代码:
var testObject = function(val) {
this.value = "This is my initial value",
if (arguments[0]) {
this.value = val;
}
};
var first = new testObject(); //uses initial value
var second = new testObject("hi"); //value = hi
如果您想使用此符号编写类,请查看以下内容:您使用的对象符号可以与静态类进行比较。 以下是您试图实现的目标的代码:
var testObject = function(val) {
this.value = "This is my initial value",
if (arguments[0]) {
this.value = val;
}
};
var first = new testObject(); //uses initial value
var second = new testObject("hi"); //value = hi
如果您想使用这种符号编写类,请看一下:您不实例化对象,而是实例化函数
var testObject = function() {
this.value = "this is my initial value";
this.setup = function() {
this.value = "foo";
}
}
var myFirstObject = new testObject();
var mySecondObject = new testObject();
编辑:
根据您的评论,以下是如何使用此对象上的函数绑定到DOM:
document.getElementById('idOfElem').addEventListener(
'click', myFirstObject.clickHandler);
请记住,您不能保证单击处理程序将在对象的上下文中执行(即,在单击处理程序中,此
可能不是您的测试对象
实例)。如果您的clickHandler
打算以任何方式修改对象的实例变量,最好确保上下文如下:
document.getElementById('el').addEventListener('click',
function() {
myObj.handleClick.apply(myObj, arguments);
});
你不是实例化对象,而是实例化函数
var testObject = function() {
this.value = "this is my initial value";
this.setup = function() {
this.value = "foo";
}
}
var myFirstObject = new testObject();
var mySecondObject = new testObject();
编辑:
根据您的评论,以下是如何使用此对象上的函数绑定到DOM:
document.getElementById('idOfElem').addEventListener(
'click', myFirstObject.clickHandler);
请记住,您不能保证单击处理程序将在对象的上下文中执行(即,在单击处理程序中,此
可能不是您的测试对象
实例)。如果您的clickHandler
打算以任何方式修改对象的实例变量,最好确保上下文如下:
document.getElementById('el').addEventListener('click',
function() {
myObj.handleClick.apply(myObj, arguments);
});
您的代码有很多问题。首先,您试图通过调用构造函数来实例化一些东西。您的
testObject
不是函数,因此会导致类型错误。您需要将testObject
更改为以下内容:
var TestObject = function () {
this.value = "this is my initial value";
};
TestObject.prototype.setup = function () {
this.value = "foo";
};
注意,我在该标识符中使用了大写的T
。。。这只是构造函数的最佳实践。还要注意我是如何在原型
上定义设置
方法的。这比将其定义为实例的属性(使用This.setup
)要有效得多,因为内存中只需要存在函数的一个副本
既然TestObject
是一个函数,可以通过使用new
操作符调用它来实例化它:
var myFirstObject = new TestObject();
var mySecondObject = new TestObject();
在TestObject
的实例上调用setup
方法时,它将应用于该实例。换句话说,setup
方法中的this
的值将引用调用该方法的实例:
myFirstObject.setup();
console.log(myFirstObject.value); // 'foo'
console.log(mySecondObject.value); // 'this is my initial value'
您的代码有很多问题。首先,您试图通过调用构造函数来实例化一些东西。您的
testObject
不是函数,因此会导致类型错误。您需要将testObject
更改为以下内容:
var TestObject = function () {
this.value = "this is my initial value";
};
TestObject.prototype.setup = function () {
this.value = "foo";
};
注意,我在该标识符中使用了大写的T
。。。这只是构造函数的最佳实践。还要注意我是如何在原型
上定义设置
方法的。这比将其定义为实例的属性(使用This.setup
)要有效得多,因为内存中只需要存在函数的一个副本
既然TestObject
是一个函数,可以通过使用new
操作符调用它来实例化它:
var myFirstObject = new TestObject();
var mySecondObject = new TestObject();
在TestObject
的实例上调用setup
方法时,它将应用于该实例。换句话说,setup
方法中的this
的值将引用调用该方法的实例:
myFirstObject.setup();
console.log(myFirstObject.value); // 'foo'
console.log(mySecondObject.value); // 'this is my initial value'
您错误地定义了构造函数。试试这个:
function testObject() {
this.value = "this is my initial value";
this.setup = function() {
this.value = "foo"
}
};
然后,您可以调用
newtestobject()
如果您没有正确定义构造函数。试试这个:
function testObject() {
this.value = "this is my initial value";
this.setup = function() {
this.value = "foo"
}
};
然后您可以调用
newtestobject()
谢谢。我有一个小问题,不想就此提出新问题,但是,有没有办法将DOM事件绑定到这些对象中的函数?如果这不是一个快速的问题,那么我最好打开一个新的问题。谢谢。我有一个小问题,不想就此提出新问题,但是,有没有办法将DOM事件绑定到这些对象中的函数?如果这不是一个快速的问题,那么我最好打开一个新的问题。