в чем разница между функцией, которая возвращает объект с методами, и переменной, которая является объектом с методами - PullRequest
0 голосов
/ 15 марта 2019

Так что я не знаю много о лучших практиках кодирования в JavaScript, но я надеюсь лучше понять, как должны быть разработаны функции, позволяющие вызывать их из файла JavaScript.

Взятьследующий пример.По сути, они оба делают одно и то же, но один хранится в переменной, а другой - в функции.

var myVariable1 = {
	add1: function( that ){
		var number = parseInt( that.innerHTML, 10 );
		if( !isNaN( number )){
			document.getElementById( "variableResult" ).innerHTML = number + 1;
		}
	}
};
function myFunction(){
	var object = new Object();
	object.add1 = function( that ){
		var number = parseInt( that.innerHTML, 10 );
		if( !isNaN( number )){
			document.getElementById( "functionResult" ).innerHTML = number + 1;
		}
	}
	return object;
}
<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<title>Function or Variable</title>
	<script src="functionorvariable.js"></script>
</head>
<body>
	<main>
		<a onclick="myVariable1.add1( this )">4</a>
		<p id="variableResult"></p>
		<br>
		<br>
		<a onclick="window.myFunction().add1( this )">7</a>
		<p id="functionResult"></p>
	</main>
</body>
</html>

Мой вопрос: в чем здесь реальная разница?Разве они одинаковы, просто один может выступить немного лучше, чем другой?Один из них «лучше», чем другой?

Я только начинаю понимать способы реализации модульного проектирования в JavaScript, поэтому я приношу свои извинения, если оба из них являются плохой практикой.

1 Ответ

1 голос
/ 15 марта 2019

myFunction создает объект и возвращает при каждом вызове. Это не имеет особого смысла, так как объект не содержит никаких свойств, просто функция, которая может быть просто обычной функцией.

myVariable1 это просто объект со свойством функции. Имеет смысл объединить похожие функции в одном объекте, чтобы не загрязнять глобальную область видимости (и сохранять структуру структурированной).

...