我创建了一个生成并返回对象的函数:
this.importFonts = function() {
var fonts = [
{
name : 'Oswald',
family : 'Oswald',
url : 'http://fonts.googleapis.com/css?family=Oswald'
}
];
var fontGroup = canvas.g();
fonts.forEach(function(font){
var snapFont = Snap.parse('<style type="text/css">@import url(' + font.url + ');</style>');
fontGroup.add(snapFont);
});
fontGroup.selectAll('style').forEach(function(elm){
elm.toDefs();
});
fontGroup.remove();
};
稍后在我的代码中我传递了如下值:
function TickersObj(tag, array, boolLots, boolOptions, boolDisplay) {
tag = tag || {};
array = array || [];
boolLots = boolLots || false;
boolOptions = boolOptions || false;
boolDisplay = boolDisplay || true;
console.log('tag = ', tag);
console.log('array = ', array);
console.log('boolLots = ', boolLots);
console.log('boolOptions = ', boolOptions);
console.log('boolDisplay = ', boolDisplay);
this.assoTikArray = array;
this.lotsOfTags = boolLots;
this.tagOptions = boolOptions;
this.tagsHoverDisplay = boolDisplay;
return this;
}
然而,一旦到达此行switch(type) {
case 'tagsPanel':
tag.tickers = data.data.ticker_tag.tickers;
var tickersObj = TickersObj(tag, tag.tickers, tag.lotsOfTags, true, true);
return tickersObj;
break;
....
,我就会收到错误this.assoTikArray = array;
关于我做错了什么的想法?
答案 0 :(得分:8)
您只是在没有上下文的情况下调用该函数(即TickersObj()
而不是something.TickersObj()
),因此其中的the value of this
是默认对象(浏览器中为window
)或undefined
(严格模式)。大概是你处于严格的模式。
要创建函数的新实例,您必须使用the new
keyword调用它。
var tickersObj = new TickersObj(tag, tag.tickers, tag.lotsOfTags, true, true);