Cần giúp đỡ về OOP trong JS

var a = function() {
     this.n =  10;
     this.b = function() {
         setInterval(function(){
            // gọi n của a tại vị trí này
         }, 1000);
     }
}

Giờ e muốn gọi a trong cái hàm setInterval kia ( e có cmt đó ạ ) thì phải gọi như nào ạ.

  • E có gọi “this.n” nhưng ko được. Vậy gọi như này thì n sẽ là n của function trong setInterval hay của “b” ạ.

E cảm ơn… !

Gọi a.n thì sao nào?

3 Likes

Vẫn không được ạ.
“a.n” = undefined

nếu bạn đang ở mức căn bản thì đừng nên động tới những bài như thế này, nó ko có nhiều ý nghĩa cho những bạn level cơ bản đâu
khi đã cứng cứng thì mới chơi với những bài thể loại này, mà cũng mang tính chất chém gió là chính chứ đi làm code lằng nhằng thể hiện thế này thì ăn chửi.

2 Likes

a là function object mà, có chạy đoạn nào đâu.

2 Likes

Chào bạn,

Vấn đề này liên quan đến kiến thức về this trong JS nhé, mình giới thiệu cho bạn 2 cách xử lý trong trường hợp này nhé:
Cách 1 sử dụng arrow function:

var a = function() {
     this.n =  10;
     this.b = function() {
         setInterval(() => {
            console.log(this.n);
         }, 1000);
     }
}
var newA = new a();
newA.b();

Cách 2:

var a = function() {
     this.n =  10;
     this.b = function() {
         var self = this;
         setInterval(function(){
            console.log(self.n);
         }, 1000);
     }
}

var newA = new a();
newA.b();
3 Likes

E cảm ơn a nhiều nha

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?