用Js对象构造函数辅助

时间:2017-07-10 18:05:26

标签: javascript

我正在开发一个javascript应用程序并且在对象构造函数方面遇到了一些麻烦。我将使甲板中的每张卡片成为一个对象,因此只需要构建这些对象的数组。这就是我所拥有的:



    function card(suit1,number1) // Constructor
    {
    this.suit1 = suit1;
    this.number1 = number1;
    }


    function makeDeck1() {
    var deck1 = new Array()
  
    deck1[0]= new card('S','A');
    deck1[1]= new card('S','1');

    }


    function myFunction() {
	makeDeck1();
    alert('gman' + deck1);	
    }

    <h2>Blackjack</h2>

    <button onclick="myFunction()">Click me</button>
&#13;
&#13;
&#13;

基本上控制台告诉我&#34; deck1&#34;没有定义......所以这个过程有问题......

想知道是否有人可以对此有所了解。

谢谢! ģ

3 个答案:

答案 0 :(得分:2)

为什么不使用像卡一样的课程? (P.S. Classes应以大写字母开头)。

function Card(suit, number) {
  this.suit = suit;
  this.number = number;
}

Card.prototype.toString = function() {
  return this.suit + this.number;
};


function Deck() {
  this.deck = [new Card('S', 'A'), new Card('S', '1')];
}

Deck.prototype.toString = function() {
  return this.deck.join(",");
};


function myFunction() {
  var deck = new Deck;
  console.log('gman:' + deck);
}
<h2>Blackjack</h2>

<button onclick="myFunction()">Click me</button>

答案 1 :(得分:1)

控制台正在给出正确的错误,deck1myFunction()内不存在,它在makeDeck1()内声明且其范围仅限于此函数,您需要将其返回并分配给myFunction()内的变量以便能够使用它。

&#13;
&#13;
function card(suit1, number1) {
  this.suit1 = suit1;
  this.number1 = number1;
}


function makeDeck1() {
  var deck1 = []; // avoid new Array constructor
  deck1.push(new card('S', 'A'));
  deck1.push(new card('S', '1'));
  return deck1;
}

function myFunction() {
  var deck1 = makeDeck1();
  alert('gman' + JSON.stringify(deck1));
  console.log(deck1);
}
&#13;
<h2>Blackjack</h2>
<button onclick="myFunction()">Click me</button>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

请不要赞成这一点,因为这是一个微不足道的答案,只是提供帮助

问题是您的变量仅存在于makeDeck1()的范围内。你需要像这样返回值:

&#13;
&#13;
function card(suit1, number1) // Constructor
{
  this.suit1 = suit1;
  this.number1 = number1;
}


function makeDeck1() {
  var deck1 = new Array()

  deck1[0] = new card('S', 'A');
  deck1[1] = new card('S', '1');

  return deck1; // return it
}


function myFunction() {
  var deck1 = makeDeck1(); // define it here
  alert('gman ' + JSON.stringify(deck1)); // serialize it
}
&#13;
<h2>Blackjack</h2>

<button onclick="myFunction()">Click me</button>
&#13;
&#13;
&#13;

此外,通常使用title-case定义构造函数,因此Card而不是card。祝你好运。