2013-06-18 25 views
6

JSLint .call bu kullanımı ile yanlış bir şey olduğunda ısrar:JSLint ısrar ediyor " 'ara' Beklenmeyen"

function GridView(tableArray, tableId, multiselect) { 
    "use strict"; 
    if (multiselect == undefined) { 
     this.multiselect = false; 
    } else { 
     this.multiselect = multiselect; 
    } 

    this.tableID = tableId; 
    this.propertiesArr = []; 
    this.tableHTML = undefined; 
    this.oTable = undefined; 

    this._constructTable.call(this, tableArray); 

} 

yanlış mı. Her neyse, beklenmedik. Sadece hayatımın nedenini anlayamıyorum, neden kodda bir sorun var? Çalışıyor gibi görünüyor, ama beklenmedik davranışlardan endişeleniyorum. - Eğer olurdu aynı bağlam olacağını this bağlamında _constructTable yöntemi, aradığınız

this._constructTable.call(this, tableArray); 

Bu yapı büyük ölçüde anlamsız gibi görünen:

+0

, neden kullanmam gerekiyor '.call': JSLint tam olarak bekliyor? Sadece bu._constructTable (tableArray) yapamazsınız ''? –

+0

@James Allardice: Yapmıyorum ve evet yapabilirim. Çoğunlukla şu anda 'çağrı' ile deney yapıyorum. Yani JSLint, kodun aptal olduğunu görmek için yeterince zeki mi? – Fenixp

+1

Evet, öyle görünüyor. 'ThisconstructTable' öğesinden 'this.' öğesini kaldırırsanız veya '.call' içindeki herhangi bir şeye 'this' değerini değiştirirseniz, JSLint artık uyarı vermez. –

cevap

10

uyarı nedenini şu çizgidir normal bir arama ifadesi ile çağırdıysanız çağırdı.

`_constructTable` (muhtemelen` GridView.prototype` aracılığıyla) örneğinde zaten mevcutsa
this._constructTable(tableArray);