我已经使用构造函数方法在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;
}
答案 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