如何在Javascript中使用两个空对象初始化数组

时间:2015-11-13 00:26:38

标签: javascript arrays angularjs

我正在制作一个角度控制器,需要用两个空对象初始化一个数组,这样屏幕上就会出现两条线,当点击+按钮时我需要在数组中初始化一个新对象。我不确定如何去做这件事。

这是我最好的尝试:

var myApp = angular.module('myApp', []);

myApp.controller('myController', ['$scope', '$q', function($scope, $q) {

    $scope.arr = [card('',''),card('','')];
    $scope.addLine = function(index){
        $scope.arr.push(card('',''));
    }
    $scope.removeLine = function(index){
        $scope.arr.splice(index, 1);
    }
}]);

function card(term, definition){
    this.term = term;
    this.definition = definition;
}

2 个答案:

答案 0 :(得分:2)

您需要使用关键字new制作card的实例:

$scope.arr = [new card('',''), new card('','')];
//            ^                ^ See new keyword  
$scope.addLine = function(index){
    $scope.arr.push(new card('',''));
    //              ^ See new keyword
}

此外,您应该考虑始终大写您的构造函数(这样您可以指示它的构造函数:

new Card('', '');
function Card(...) {...}

您还可以通过new检查来了解instanceof关键字的必要性:

// No need for new anymore:
var card = Card(1, 2, 3); 
console.log(card instanceof Card); // true
function Card(a, b, c) {
  if (!(this instanceof Card)) return new Card(a, b, c);
  this.a = a;
  this.b = b;
  // ...
}

答案 1 :(得分:0)

[new card('',''), new card('','')]

source