当对象存储在变量中时调用对象的方法,但是当对象存储在数组中时不调用

时间:2019-03-05 06:44:58

标签: javascript

我已经使用构造函数方法在Javascript中定义了一个类Timeline

function Timeline(formal parameters)
{
   //property definitions
}

方法是在原型对象上定义的,

Timeline.prototype.zoomMax = function(){ // Method Definition };

我正在使用数组存储时间轴的对象,

var timeline = [];
timeline[0] = new Timeline(parameter's values);
timeline[1] = new Timeline(parameter's values);

但是当我将“时间轴”方法称为时,

timeline[0].zoomMax();

我得到了错误

  

未捕获的TypeError:无法读取未定义的属性'zoomMax'

注意:我已经检查了打印时间轴[0],对象已存储在其中。

当我将对象存储在简单变量而不是数组中时,它工作正常,

var timeline = new Timeline(parameter's values);

timeline.zoomMax(); //Gives me the output

我不明白,如何对数组中存储的对象调用zoomMax()方法。

请指导。

我的时间轴代码,

function Timeline(video_duration_in_sec,frames_per_sec = 25,zoom_value=1){

            ComponentContainer.call(this,'time-cover');
            this.video_duration_in_sec = video_duration_in_sec;
            this.frame_count = video_duration_in_sec * frames_per_sec;
            this.zoom_value = zoom_value;
            this.ruler_width = this.video_duration_in_sec * (100/this.zoom_value);
            this.min = 1;
            this.max = 25;                     


        } 

2 个答案:

答案 0 :(得分:1)

使用class关键字定义对象类

class Timeline 
{
    constructor(parameters) {
        //property definitions, initialization...
    }

    zoomMax() {
        console.log('zoom');
    }
}


var timeline = [];
timeline[0] = new Timeline('parameters values');
timeline[1] = new Timeline('parameters values');

timeline[0].zoomMax();

答案 1 :(得分:0)

这对我来说很好

    function Timeline(params){ ... }

    Timeline.prototype.zoomMax = function() { ... } 

    var timeline = []
    timeline[0] = new Timeline(param1);
    timeline[1] = new Timeline(param2);

    timeline[0].zoomMax(); // Executes zoomMax function

您的初始错误可能是由于zoomMax方法的声明错误所致。有关此的更多信息,请参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Not_a_function