【发布时间】:2018-03-24 07:01:27
【问题描述】:
是否可以在一个函数中包含“this”和“return”? 像这样?
我经常使用不同的参数调用函数。但据我了解严格模式,您必须使用“new convertSomething”为每个参数启动函数。有没有更短的方法? 谢谢
"use strict";
function convertSomething(convertSeconds){
let minutes = Math.floor(convertSeconds / 600) % 600;
let seconds = Math.trunc(convertSeconds % 600 / 10);
let milliseconds = (convertSeconds % 600)%10;
this.milliseconds = milliseconds;
this.minutes = minutes;
this.seconds = seconds;
let formattedTime = minutes + ":" + seconds + "." + milliseconds;
this.formattedTime = formattedTime;
return formattedTime;
}
let showTime = new convertSomething(2005);
console.log(showTime.milliseconds);
console.log(showTime.formattedTime);
console.log(convertSomething(1000)); // ERROR: this is undefined
<html>
<head>
<meta charset="ISO-8859-1">
<script src="returnthis.js"></script>
</head>
<body>
</body>
</html>
【问题讨论】:
-
你的函数应该做什么?它应该是构造函数或格式化时间——不能两者兼而有之。您可以使用一个来实现另一个。
-
我想将毫秒转换为格式化的时间戳,但想访问单独的参数:分钟、秒和毫秒。
-
如果你使用
this,你可以像你一样简单地使用showTime.formattedTime;但是使用this和return没有意义,因为您使用this修改的对象现在已丢失在垃圾中。 -
但是对于每个新参数我都必须用
let showTime = new convertSomething(otherParam);再次启动函数不是更容易调用函数并通过return获得结果吗? -
对我来说,@elegal 的解决方案是分解计算转换的代码的聪明方法。如果他需要转换的详细信息,他会创建一个新对象,如果不需要,他只需调用函数并获取结果,而不需要创建一个对象来存储提供他不需要的详细信息的字段。
标签: javascript this strict