Javascript警告框未显示

时间:2012-03-20 13:39:25

标签: javascript arrays oop prototype

我目前正在学习面向对象的Javascript,但似乎警报无效。这有什么问题?

<

html>
 <head>
  <script>

   function professor(name, myLecture){
        this.name = name;
        this.myLecture = myLecture;
   }

   professor.prototype.display = function(){
        return this.name + " is teaching " + this.myLecture;
   };

   function subjectList(subject){
        this.subject = subject;
   }

   subjectList.prototype.showAll= function(){
            var str = " " ;
            for(var i = 0 ; i<subject.length; i++ )
            str+= this.subject[i].display();
            return str;
   };

   var ListOfSubs = new subjectList([
        new professor("Muy","Obprog")
   ]);

   alert(ListOfSubs.showAll());

  </script>
   <body>
   </body>
 </head>
</html>

5 个答案:

答案 0 :(得分:2)

应该是this.subject.length而不是subject.length

答案 1 :(得分:0)

您需要this.

   subjectList.prototype.showAll= function(){
            var str = " " ;
            for(var i = 0 ; i< this.subject.length; i++ ) // notice this.subject
            str+= this.subject[i].display();
            return str;
   };

答案 2 :(得分:0)

该行:

 for(var i = 0 ; i<subject.length; i++ )

错误是“主题未定义”。 从subject.length = 更改此 .subject.length应该可以解决您的问题。

应输出:

Muy is teaching Obprog

答案 3 :(得分:0)

其他人已告知您js-code出现问题的原因。

我的另一个注意事项。

通常在以前发生异常时不会出现编程警报。

顺便说一句,你的身体标签应该在关闭头标签之后

答案 4 :(得分:0)

此代码适用于您的脚本标记:

 function professor(name, myLecture){
        this.name = name;
        this.myLecture = myLecture;
   }

   professor.prototype.display = function(){
        return this.name + " is teaching " + this.myLecture;
   };

   function subjectList(subject){
        this.subject = subject;
   }

   subjectList.prototype.showAll= function(){
            var str = " " ;
            for(var i = 0 ; i<subject.length; i++ )
            str+= this.subject[i].display();
            return str;
   };

   var ListOfSubs = new subjectList([
        new professor("Muy","Obprog")
   ]);

   alert(ListOfSubs.showAll());

原因:在showAll函数中,您使用的是subject,这是不存在的,但原型的对象有一个名为subject的成员。因此i<subject.length代替i<this.subject.length,而不是解决您的问题。