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

标签 javascript arrays angularjs

我正在制作一个 Angular Controller ,需要用两个空对象初始化一个数组,这样屏幕上就会出现两条线,我需要在单击 + 按钮时初始化数组中的一个新对象。我不确定该怎么做。

这是我最好的尝试:

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;
}

最佳答案

您需要使用关键字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(...) {...}

您还可以通过检查 instanceof 来消除对 new 关键字的需求:

// 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;
  // ...
}

关于javascript - 如何在 Javascript 中用两个空对象初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683965/

相关文章:

angularjs - 绑定(bind)输入在 angularjs 中不集中

javascript - 查找与 HTML 文档中的模式匹配的所有类?

javascript - 单个页面中的两个表单,并使用 Codeigniter 使用 Bootstrap 模式

php - 如何在php中展平多维数组

javascript - http调用后如何更新 View 中的范围变量值?

android - iframe 标签在最新版本的 Ionic 中不起作用

javascript - 一个数组加上 arr.indexOf() 另一个数组的循环时间复杂度

javascript - 无法单击带有链接的自定义工具提示的 Apexcharts

c++ - 将位集数组转换为整数数组

Javascript:具有键值替代的多维数组?