我是学习Javascript的新手. 想知道为什么当条件未链接到构造函数中的字段时有效



正在浏览教程并遇到这个。 创建类时。"minutesWatched"没有链接(即通过"this.minutesWatch= minutes.watched"(,所以它仍然能够使用给定的条件工作。当通过控制台时.log它像往常一样工作并给出响应。我错过了什么吗?

class Episode {
constructor(title, duration, minutesWatched) {
this.title = title;
this.duration = duration;

if (duration == minutesWatched) {
console.log(true);
} else {
console.log(false);
}
}
};

let firstEpisode = new Episode('Dark Beginnings', 45, 45);
let secondEpisode = new Episode('The Mystery Continues', 45, 10);
let thirdEpisode = new Episode('An Unexpected Climax', 60, 0);

一个例子来进一步澄清我的意思。

class Episode {
constructor(title, duration, minutesWatched) {
this.title = title;
this.duration = duration;

}
}
let firstEpisode = new Episode('Dark Beginnings', 45, 45);
console.log(firstEpisode);

返回

[object Object] {
duration: 45,
title: "Dark Beginnings"
} 

看到没有minutesWatched键/值,因为它没有在构造函数中链接?

这就是为什么我不太明白我的第一个代码中的条件如何在没有链接的情况下很好地工作minutesWatched(即通过构造函数中的this.minutesWatched = minutesWatched

希望我的问题现在清楚了。

欢迎来到 StackOverflow!

观看的分钟数作为"参数"传递给函数。您可以看到,在构造函数方法中,括号中有 3 个变量。这些变量可以在整个方法中使用(括在大括号中(。

例如(取自 Mozilla Docs(:

let Rectangle = class {
constructor(height, width) {
this.height = height;
this.width = width;
}
};

您可以看到"this"关键字根据通过构造函数传入的参数将类变量设置为各自的值

您可以在此处了解有关函数参数的更多信息:W3Schools JavaScript 函数参数

关于您对变量"链接"的问题。重命名使用"this"关键字设置的变量并查看结果可能会对您有所帮助。

将类设置为等于此值,并查看结果:

class Episode {
constructor(title, duration, minutesWatched) {
this.episodeTitle = title;
this.episodeDuration = duration;

if (duration == minutesWatched) {
console.log(true);
} else {
console.log(false);
}
}
};

您会注意到,当您记录对象时,它现在显示

Object {
episodeDuration: 45,
episodeTitle: "Dark Beginnings"
}

这是因为this关键字创建与当前类的实例相关的"属性"。

记录类时,您实际上看不到传递的duration变量,而是看到在构造函数开始时创建的this.duration属性。

可以在构造函数中调用minutesWatched参数,这意味着您可以在该方法中使用该变量,但是在您说this.minutesWatched = minutesWatched之前不会记录它,因为当您记录类时,您正在记录该类的属性(属性使用this.<property_name>定义(

希望这是有道理的,发表评论,我会在这里添加更多澄清

最新更新