JavaScript 约定 : switch statement in object constructor

标签 javascript angularjs object switch-statement

我想知道我的方法对于这种情况是否有效/最佳实践: 我在 Angular 工厂中构造了一个像这样的标记。我没有扩展每种类型的标记,而是使用 switch 语句来切换标记的类型。类型决定了标记的图标。

engine.factory('marker', ['map', function (map) {

 return function constructMarker(position, id, type) {

this.id = id;
this.position = position;

switch (type) {
  case 'assigned':
    this.icon = greenMarker;
    break;
  case 'unassigned':
    this.icon = redMarker;
    break;
  default:
    throw new Error(type + 'is an invalid marker type');
    break;
  }

    return L.marker(this.position, {icon: this.icon}).addTo(map.layers[type]);
  };
}]);

谢谢

最佳答案

这个更优雅一点:

engine.factory('marker', ['map', function (map) {
    return function constructMarker(position, id, type) {
        var types = {
            'assygned':{
                icon: greenMarker
            },
            'unassigned':{
                icon: redMarker
            }     
        }

        if(!types[type]){
            throw new Error(type + 'is an invalid marker type');
        }

        this.id = id;
        this.position = position;    

        return L.marker(this.position, {icon: types[type].icon}).addTo(map.layers[type]);
    };
}]);

关于JavaScript 约定 : switch statement in object constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22269359/

相关文章:

javascript - Visual Studio typescript "Uncaught ReferenceError: exports is not defined at...."

javascript - 从 AngularJS 传递 JSON 时格式错误的 JSON 字符串错误

javascript - AngularJS 过滤 - 多个表达式或动态链接 ng-filters?

python - 如何在传输过程中保护 REST API 负载?

javascript - 当调用 'this' 的函数位于子对象的对象内部时,您将如何引用 'this'?

arrays - 过滤数组,以便删除所有 undefined object

java - Java 特定的 NullPointerException

javascript - 如何为对象制作过滤器?

javascript - Electronjs 拖放

javascript - 如何使用数组访问不同的变量