代码之家  ›  专栏  ›  技术社区  ›  john doe

在JavaScript中从静态方法内部实例化对象

  •  1
  • john doe  · 技术社区  · 6 年前

    我有以下代码。由于某种原因,当我试图从getAllMovies静态方法内部实例化Movie对象时,我得到了错误。我做错了什么?

    Movie.js:7 Uncaught TypeError: Cannot set property 'name' of undefined
        at new Movie (Movie.js:7)
    
    import React, { Component } from 'react';
    
    
    class Movie extends Component {
    
      constructor(name, year, genre) {
        this.name = name
        this.year = year
        this.genre = genre
      }
    
      static getAllMovies() {
    
        let movies = []
        let movie = new Movie("ss","sss","aaa")
    
        /*
        for(let index = 1; index <= 10; index++) {
    
          let movie = new Movie(`Movie {index}`,2000 + index,`Genre {index}`)
          movies.push(movie)
    
        } */
    
        return movies
    
      }
    
    }
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Mark    6 年前

    这个 Movie super() this :

    class Component{}
    
    class Movie extends Component {
    
      constructor(name, year, genre) {
        super()
        this.name = name
        this.year = year
        this.genre = genre
      }
    
      static getAllMovies() {
        let movie = new Movie("ss","sss","aaa")
        return movie
      }
    
    }
    
    console.log(Movie.getAllMovies())
        2
  •  0
  •   Julian    6 年前

    在反应组分中, props state 用于数据管理。 因此,声明如下:

    class Movie extends component{
         constructor(props){
              super(props);
              this.state = {
                   name : this.props.name,
                   year : this.props.year,
                   genre : this.props.genre,
              }
         }
    

    发生上述错误的原因是您的构造函数