我看到很多的构造函数示例是
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
但是,如果您想要许多参数,例如20+,那该怎么办?这似乎效率低下。 声明一个接受许多参数的构造函数的正确有效方法是什么?
我的最终目标是创建一个包含大量用户设置的图像滑块(slidesToShow,slidesToScroll,slideClass等)。所以我希望让用户初始化它并提供选项。我现在拥有它的方式有点奇怪哈哈。例如:
function Slider(options) {
const slideClass = options.slideClass
}
然后像这样初始化:
const demoSlider = new Slider({
slideClass: 'image-slider'
})
但我没有像普通的构造函数那样使用 this 关键字,但它也不是对象文字。所以我的代码必须构建错误?刚刚从主要jQuery切换尝试以正确的方式学习/编写vanilla JS。
提前感谢您的帮助!
答案 0 :(得分:2)
只需将对象存储在this.options
:
function Slider(options) {
this.options = options;
}
或者,如果您想直接在this
下,只需使用对象分配:
function Slider(options) {
Object.assign(this, options);
console.log(this.name);
}
new Slider({ name: "test" });
答案 1 :(得分:0)
我认为你最好逐个设置它们,因为它们可能有默认值,例如:
this.height = (options.height)?options.height:100;
另外,我认为您并不完全理解new
的含义。
您没有使用this
,这意味着所有变量都在您的函数中,
也许在这种情况下你只需要执行一次该功能来启动你的滑块事件。
因此您只需致电Slider(options)
。
new Slider()
将创建一个可以重用的对象,
但你甚至没有分配到像var mySlider = new Slider()
...
在这种情况下,您应该考虑是否需要将功能设计为function
或constructor
?