2015-09-11 16 views
36

Tôi đang phát bằng nội dung mới trong JavaScript/ES6. Tôi nhận được mã số Uncaught ReferenceError: this is not defined(...) player.js:5 trong mã của mình. Theo tôi thấy, không có lỗi ở đây! Đây có phải là một lỗi? Bất kỳ cách giải quyết nào?"Tham chiếu không bắt buộcLỗi: điều này không được xác định" trong hàm tạo lớp

index.html

<html> 
    <head> 
     <script type="text/javascript" src="js/entity.js"></script> 
     <script type="text/javascript" src="js/player.js"></script> 
     <link href="css/style.css" rel="stylesheet" type="text/css"> 
     <title>Test</title> 
    </head> 
    <body> 
     <canvas id="screen" width=500 height=500></canvas> 
     <script type="text/javascript">initialize();</script> 
    </body> 
</html> 

entity.js

"use strict"; 

class Entity { 
    constructor() { 
     console.log("Entity"); 
    } 
} 

player.js

"use strict"; 

class Player extends Entity { 
    constructor() { 
     console.log("Created"); // <- error here 
    } 
} 
+1

Tôi có thiếu thứ gì đó hay bạn chưa bao giờ khai báo 'initialize' ở đâu ??? – Bergi

+0

Đó là mã cũ và không liên quan còn sót lại trong lỗi của tôi. – bshaw

+1

Bản sao có thể có của [lớp học Javascript ES6 mở rộng mà không có siêu] (http://stackoverflow.com/questions/31067368/javascript-es6-class-extend-without-super) – Makyen

Trả lời

61

Đây là một thực tế của cú pháp lớp mới. Lớp con của bạn cần gọi số super() để lớp học được khởi tạo đúng cách, ví dụ:

super(arg1, arg2, argN); 

với bất kỳ đối số nào mà nhà xây dựng mẹ cần.

Điều bắt buộc là, nếu thực hiện đến cuối hàm constructor, giá trị của this cần phải được khởi tạo cho một cái gì đó. Bạn cần phải ở trong một lớp cơ sở (trong đó this được tự động khởi tạo), được gọi là super() do đó this được khởi tạo hoặc return đã chỉnh sửa một đối tượng thay thế.

class Player extends Entity { 
    constructor() { 
    super(); 
    console.log("Created"); ;// error here 
    } 
} 

Bạn có thể nghĩ về nó như constructor chức năng loại có một tự động return this ở phần cuối của họ.

Các vấn đề liên quan