"X" não é uma função

Olá. Eu criei um objeto JavaScript, e dentro dele gostaria de executar uma função. Não vejo nenhum erro no meu código, mas o navegador está me dizendo que minha função não é uma função.

Objeto:

function Properties(){

	var language;
	var originalKeys;

	this.getLanguage = function(){
		return language;
	}

	this.setLanguage = function(language){
		this.language = language;
	}
	this.getOriginalKeys = function(){
		return originalKeys;
	}

	this.setOriginalKeys = function(originalKeys){
		this.originalKeys = originalKeys;
	}

	function translateTo(language){

	}

	function printKeys(){
		alert("chamou sadisgraça");
		for (var key in originalKeys) {
    		console.log(originalKeys[key]);
		}
	}
}

Chamando a função…

<script type="text/javascript">
		function handleFileSelect(evt) {
		    var files = evt.target.files;
		    var output = [];
		    for (var i = 0, f; f = files[i]; i++) {
		      	var reader = new FileReader();
			    reader.readAsText(f);
   			    var properties = new Properties();
			    var originalKeys = {};
			   	reader.onload = function(e) {
				    var lines = reader.result.split("\n");
				    for(i = 0; i< lines.length; ++i){
				    	var key = lines[i].substring(0,lines[i].indexOf("="));
				    	var value = lines[i].substring(lines[i].indexOf("=")+1, lines[i].length);
				    	originalKeys[key] = value;
				    }
				};
				properties.setOriginalKeys(originalKeys);
				properties.printKeys(); ///AQUI
		    }
		  }
		window.onload = function(){
			document.getElementById('fileInput').addEventListener('change', handleFileSelect, false);
		}
		function drop(e){
			e.stopPropagation();
		    e.preventDefault();
		    var reader = new FileReader();
		    reader.readAsText(e.dataTransfer.files[0]);
		    var properties = new Properties();
		    var originalKeys = {};
		   	reader.onload = function(e) {
			    var lines = reader.result.split("\n");
			    for(i = 0; i< lines.length; ++i){
			    	var key = lines[i].substring(0,lines[i].indexOf("="));
			    	var value = lines[i].substring(lines[i].indexOf("=")+1, lines[i].length);
			    	originalKeys[key] = value;
			    }
			};
			properties.setOriginalKeys(originalKeys);
			properties.printKeys(); ///AQUI
		}
	</script>

Erro:

this.printKeys = function() {
    alert("chamou sadisgraça");
}

Só observar que nos outros casos você fez certo.

1 curtida

Cara, eu juro que tinha tentado desse jeito antes, e não funcionou :joy:. Enfim, agora está funcionando, valeu.