Javascript 在使用之前,如何将初始数据分配给文本对象中的某些变量
我有一个文字对象,它做一些事情,这个对象必须在使用它的任何方法之前为变量分配一些初始数据Javascript 在使用之前,如何将初始数据分配给文本对象中的某些变量,javascript,object,Javascript,Object,我有一个文字对象,它做一些事情,这个对象必须在使用它的任何方法之前为变量分配一些初始数据 var slideshow = { slideshowBox: null, slideImages: null, slideImagesLen: 0, init: function(){ this.slideshowBox = document.getElementById('slideshow'); this.slideImages =
var slideshow = {
slideshowBox: null,
slideImages: null,
slideImagesLen: 0,
init: function(){
this.slideshowBox = document.getElementById('slideshow');
this.slideImages = document.getElementById('images');
this.slideImagesLen = this.slideImages.children.length;
},
show: function(){
return this.slideImagesLen;
}
};
但是问题是,当你使用它的任何一种方法时,你必须首先使用init
方法,然后使用我可以使用任何其他方法,但是这种行为是不好的
slideshow.init()
console.log(slideshow.show());
我还尝试使用以下方法:
(function(){
var slideshow = {
slideshowBox: null,
slideImages: null,
slideImagesLen: 0,
init: function(){
this.slideshowBox = document.getElementById('slideshow');
this.slideImages = document.getElementById('images');
this.slideImagesLen = this.slideImages.children.length;
},
show: function(){
return this.slideImagesLen;
}
};
slideshow.init();
})();
但是,存在一些错误,例如this.slidemages为null
,slideshow.show不是函数
我想要在使用任何方法之前自动调用
init
方法,而不需要手动调用它。您应该尝试在这里使用带构造函数的原型继承
(function(){
var Slideshow = function () {
this.slideshowBox = document.getElementById('slideshow');
this.slideImages = document.getElementById('images');
this.slideImagesLen = this.slideImages.children.length;
};
Slideshow.prototype.show = function () {
return this.slideImagesLen;
};
var slideShowInstance = new Slideshow();
slideShowInstance.show();
})();
实际上,我会更进一步,使它更具可扩展性
var Slideshow = function (slideShowId, images) {
this.slideshowBox = slideShowId;
this.slideImages = images;
this.slideImagesLen = this.slideImages.children.length;
};
var slideShowId = document.getElementById('slideshow'),
images = document.getElementById('images');
var slideShowInstance = new Slideshow(slideShowId, images);
在这里,您应该尝试将原型继承与构造函数一起使用
(function(){
var Slideshow = function () {
this.slideshowBox = document.getElementById('slideshow');
this.slideImages = document.getElementById('images');
this.slideImagesLen = this.slideImages.children.length;
};
Slideshow.prototype.show = function () {
return this.slideImagesLen;
};
var slideShowInstance = new Slideshow();
slideShowInstance.show();
})();
实际上,我会更进一步,使它更具可扩展性
var Slideshow = function (slideShowId, images) {
this.slideshowBox = slideShowId;
this.slideImages = images;
this.slideImagesLen = this.slideImages.children.length;
};
var slideShowId = document.getElementById('slideshow'),
images = document.getElementById('images');
var slideShowInstance = new Slideshow(slideShowId, images);
在函数
幻灯片中调用\u slideshow.init
后,尝试返回对象\u slideshow
var slides=函数(选项){
返回(函数(opts){
var|u slideshow=opts||{
幻灯片显示框:空,
slidemages:null,
slideImagesLen:0,
init:function(){
this.slideshowBox=document.getElementById('slideshow');
this.slidemages=document.getElementById('images');
this.slidemageslen=this.slidemages.children.length;
},
show:function(){
返回此。slidemageslen;
}
};
_slideshow.init();
返回对象。创建(\u幻灯片)
}(选项)
};
var slideshow=slides();
log(“slidemageslen:,slideshow.show(),“slideshow:,slideshow”)代码>
调用函数幻灯片中的
后,尝试返回对象
var slides=函数(选项){
返回(函数(opts){
var|u slideshow=opts||{
幻灯片显示框:空,
slidemages:null,
slideImagesLen:0,
init:function(){
this.slideshowBox=document.getElementById('slideshow');
this.slidemages=document.getElementById('images');
this.slidemageslen=this.slidemages.children.length;
},
show:function(){
返回此。slidemageslen;
}
};
_slideshow.init();
返回对象。创建(\u幻灯片)
}(选项)
};
var slideshow=slides();
log(“slidemageslen:,slideshow.show(),“slideshow:,slideshow”)代码>
有两种方法。例如:
var slideshow = {
...
init: function () {
...
return this;
}
...
}.init();
或者,如果仍然过于手动,您可以简单地在对象文本中使用IIFE:
var slideshow = {
...
init: (function init () {
...
return init;
}())
...
}
在这两种情况下,在创建对象之前必须存在引用的HTML元素。有两种方法。例如:
var slideshow = {
...
init: function () {
...
return this;
}
...
}.init();
或者,如果仍然过于手动,您可以简单地在对象文本中使用IIFE:
var slideshow = {
...
init: (function init () {
...
return init;
}())
...
}
在这两种情况下,在创建对象之前,引用的HTML元素都必须存在。谢谢,但不幸的是,这两种方法工作不正常,出现两个错误,this.slidemages为null
和slideshow未定义
@LionKing如果HTML元素存在,则它们不存在。如果在调用show()
时它们可能不存在,则必须检查方法本身是否存在。这是你应用@LionKing后的代码结果。你应该问你需要什么,这篇文章回答了你的问题:“我想要任何自动调用init方法的方法”谢谢你的回答,但是数据是如何初始化的,仍然是null
?我的问题的目标是如何将初始数据分配给变量。当应用您的答案时,变量仍然有空值。谢谢,但不幸的是,这两种方法工作不正常,出现两个错误,this.slideImages是空的
,slideshow是未定义的
@LionKing如果HTML元素存在,它们没有。如果在调用show()
时它们可能不存在,则必须检查方法本身是否存在。这是你应用@LionKing后的代码结果。你应该问你需要什么,这篇文章回答了你的问题:“我想要任何自动调用init方法的方法”谢谢你的回答,但是数据是如何初始化的,仍然是null
?我的问题的目标是如何将初始数据分配给变量。当应用您的答案时,变量仍然有空值。谢谢,但不幸的是,这两种方法工作不正常,出现两个错误,this.slideImages是空的
,slideshow是未定义的
@LionKing如果HTML元素存在,它们没有。如果在调用show()
时它们可能不存在,则必须检查方法本身是否存在。这是你应用@LionKing后的代码结果。你应该问你需要什么,这篇文章回答了你的问题:“我想要任何自动调用init方法的方法”谢谢你的回答,但是数据是如何初始化的,仍然是null
?我的问题的目标是如何将初始数据分配给变量。当应用你的答案时,变量仍然有空值。谢谢,但是你的答案有点复杂,因为它是嵌套的,不容易理解。@LionKing哪一部分理解有困难?谢谢你的努力,但是你的代码想法对我来说不清楚。谢谢,但是你的答案有点复杂,而且是嵌套的,不容易理解。@LionKing哪一部分理解有困难?谢谢你的努力,但是你的代码想法我不清楚。谢谢,但是你的答案有点复杂,而且是嵌套的,不容易理解。@LionKing哪部分理解有困难?谢谢你的努力,但是你的代码想法我不清楚。