Javascript 如何创建对象
我是js的新手。我正在努力理解如何正确使用“this”。我想创建一个具有行为的对象。创建对象时,将为此人提供名称和步长Javascript 如何创建对象,javascript,dom,Javascript,Dom,我是js的新手。我正在努力理解如何正确使用“this”。我想创建一个具有行为的对象。创建对象时,将为此人提供名称和步长 我的问题是如何在函数中保存步骤的数量?如何在不丢失上下文的情况下正确执行此操作,因为my this始终关注全局对象。您可以使用函数(而不是箭头函数)或类。我添加了一个代码示例,说明如何使用函数创建对象 function Person(name) { this.name = name; this.step =1; this.stepIncrease = f
我的问题是如何在函数中保存步骤的数量?如何在不丢失上下文的情况下正确执行此操作,因为my this始终关注全局对象。您可以使用函数(而不是箭头函数)或类。我添加了一个代码示例,说明如何使用函数创建对象
function Person(name) {
this.name = name;
this.step =1;
this.stepIncrease = function() {
this.step++;
}
this.summary = function () {
return this.step;
}
}
const person = new Person("john");
您需要创建一个函数来返回person的对象。然后,要创建新对象,可以使用
new
关键字并调用函数。这将动态创建一个对象,并将This
指针指定给对象本身
有关此
的注意事项:
- 如果使用.call()、.apply()或.bind()调用函数,
将是在调用/应用/绑定中传递的对象此
- 如果在对象上调用函数,例如obj.foo(),
将是调用它的对象此
- 如果单独调用函数,
,foo()
将是未定义的(严格模式)或全局对象(非严格模式)此
职能人员(姓名,步骤=1){
返回{
名称
步
逐步递增:函数(){
这个.step++;
归还这个;
},
摘要:功能(){
console.log(本步骤);
}
}
}
const john=新人(“john”);
逐步增加;
console.log(约翰)带类的代码>
class Person {
name = "";
step = 1;
stepIncrease() {
this.step++;
}
summary() {
console.log(this.step);
}
}
const person1 = new Person();
for(let i = 0; i < 5; i++) {
person1.stepIncrease();
}
person1.summary();
班级人员{
name=“”;
步骤=1;
逐步增加{
这个.step++;
}
摘要(){
console.log(本步骤);
}
}
const person1=新人();
for(设i=0;i<5;i++){
人1.逐步增加();
}
person1.summary();
如何调用这些方法?需要对象的“实例”。您应该创建一个函数,而不是一个对象文本。然后,您可以创建该对象的“实例”(使用new
关键字),并且this
将绑定到该特定实例。相关:和@ScottMarcus这里不需要类或实例(imo使用“类”在JS中是一个反模式,尽管ES6给出了具体的语法支持,但我接受这只是一个很多人都会质疑的观点)person
已经是一个对象,在大多数其他语言中都会被视为“实例”——只需调用person.summary()
和person.stepIncrease()
等就可以了,如果这对OP不起作用,他们应该共享他们的代码。@RobinZigmond我不推荐使用类(我个人同意你的观点)。但是,我解释了这个问题(关于这个
)因为能够将多次使用Person
的数据彼此分离。仅调用对象文本上的方法无法获得这种行为,因为它表示单个实例。您需要能够创建不同的Person
对象的单独实例。不需要new
此处的Person(“John”)
将与new Person(“John”)
的工作方式相同,因为构造函数重写返回值,并且不使用new
提供的this
。是的,这是正确的。