Javascript运动解决方案。为什么一个比另一个好?

时间:2015-11-09 04:16:15

标签: javascript

我用这个解决方案解决了Javascript中的Gigasecond练习问题。我想知道我能做得更好:

//GLOBAL VARS
var usrpos;   

function handleGetCurrentPosition(location){
    var lat = location.coords.latitude;
    var lng = location.coords.longitude;
    usrpos = {lat: lat, lng: lng};
}

var map;
function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    center: usrpos,
    zoom: 12
  });
}

为什么这个解决方案更好?

var gigasecondConverter = function(unformattedDate) {
  this.date = function() {
    return beginAtStartOfDay(Number(unformattedDate) + 1000000000000)
  }
}

beginAtStartOfDay = function(number) {
  date = new Date(number)
  date.setSeconds(0);
  date.setMinutes(0);
  date.setHours(0);
  return date;
}

module.exports = gigasecondConverter

为什么原型的自执行功能和用法比直接在函数上定义日期方法更好?使用Number和getTime()也有区别吗?

1 个答案:

答案 0 :(得分:4)

哇!在第一个代码

  1. beginAtStartOfDay 在全球范围内创建。
  2. gigasecondConverter 在全局范围内创建。
  3. 然后在 gigasecondConverter中返回beginAtStartOfDay
  4. 现在,让我解释一下你的不良记忆中的一些东西:D。 beginAtStartOfDay 存储在全局范围内,然后在 gigasecondConverter 中使用它,以便在 gigasecondConverter 中创建另一个 beginAtStartOfDay 范围,它的记忆浪费。

    最大内存浪费 每次 时间你要打电话 gigasecondConverter 您将创建 beginAtStartOfDay 实例。想象一下,使用 gigasecondConverter 100次和99次你做内存浪费!记忆力差:D

    第二个

    1. Gigasecond 在全球范围内创建。
    2. date 是在 Gigasecond 原型中创建的。
    3. _beginningOfTheDay 是在 Gigasecond 原型中创建的。
    4. 现在 每次 时间你要打电话给 Gigasecond 它只会创建 ONE _beginningOfTheDay < / em>即使您拨打100次电话,它也会始终调用 Gigasecond SAME 原型功能。

      JavaScript中的原型非常强大!将它用于一个你要打电话和多次返回的功能对你的记忆总是一件好事。的:)