thảo luận keyword "This" trong JS

cs_50i

bố Bơ
Mình có chuyên C giờ code thử JS thì thấy trong JS có cái mới và lạ như keyword "this" cũng thấy khá là tiện tuy nhiên this nó gây ra bug rất củ chuối. Ae có thấy thế không?

Để code chặt chẽ, có những func mình đặt chế độ strict mode thì this lỗi luôn. Nhưng lại quen dùng this như một pointer để reference, nó khá là hay trong việc gọi hàm nhưng lại có tới mấy kiểu gọi khác nhau. Đôi khi dùng this không check kỹ làm mất binding giữa các obj nữa fix bug mệt luôn.

Các thím thấy có hay không việc hạn chế tối đa dùng this?
 
cái này thím phải rành Closures trong JS thì sẽ dễ control cái this hơn
Vậy thì phải làm nhiều với JS nhiều mới control tốt được this rồi. Em thì thấy thiên hạ ai ai cũng JS nên mới mò sang thử mà thấy đang từ C - > JS cũng nhiều cái hay phết chứ.
 
em mới tập tọe code angular thấy cũng toàn dùng this
cũng chưa nắm được tại sao trong class lại phải dùng this :ops:
đọc nhiều về nó mà thực sự chưa biết tại sao phải dùng và cách dùng
 
em mới tập tọe code angular thấy cũng toàn dùng this
cũng chưa nắm được tại sao trong class lại phải dùng this :ops:
đọc nhiều về nó mà thực sự chưa biết tại sao phải dùng và cách dùng
em mới tập tọe code angular thấy cũng toàn dùng this
cũng chưa nắm được tại sao trong class lại phải dùng this :ops:
đọc nhiều về nó mà thực sự chưa biết tại sao phải dùng và cách dùng
nhìn avt của ông t lại thấy ngờ ngợ ông Phan Tiep trùm angular.
 
Mình có chuyên C giờ code thử JS thì thấy trong JS có cái mới và lạ như keyword "this" cũng thấy khá là tiện tuy nhiên this nó gây ra bug rất củ chuối. Ae có thấy thế không?

Để code chặt chẽ, có những func mình đặt chế độ strict mode thì this lỗi luôn. Nhưng lại quen dùng this như một pointer để reference, nó khá là hay trong việc gọi hàm nhưng lại có tới mấy kiểu gọi khác nhau. Đôi khi dùng this không check kỹ làm mất binding giữa các obj nữa fix bug mệt luôn.

Các thím thấy có hay không việc hạn chế tối đa dùng this?

Theo mozilla nói thì "this" nó sẽ đi theo tiếng gọi của function. Nghĩa là chỗ nào gọi hàm thì this sẽ bind chỗ đó. Chứ k phải nó bind trong lúc defined "this". Đó là lý thuyết cho các normal function. có vài cách để bind "this" trong JS nhưng cứ tạm hỉu thế đã

Sent from Vsmart Active 3 using vozFApp
 
JavaScript:
let that = this;

$('.title').on('click', function () {
    $(this).text = that.text;
});

nhiều ông code như này mới lú này
 
em mới tập tọe code angular thấy cũng toàn dùng this
cũng chưa nắm được tại sao trong class lại phải dùng this :ops:
đọc nhiều về nó mà thực sự chưa biết tại sao phải dùng và cách dùng
Trong mỗi trường hợp cụ thể nó lại có cách dùng khác nhau đấy thím. Điểm chung là nó đại diện như một cái tên để trỏ đến biến, hàm nào đấy.

Liên hệ cuộc sống: nhiều khi ta có thể gọi và nhắc ai đấy với từ ấy: ấy ơi cho cái ấy vào cái ấy sâu sâu tý đằng ấy nhé hahaha.

Còn ví dụ code thì thím tham khảo.

JavaScript:
<script>
let emyeu1 = {
    style: 'Mình dây',
    action: function () {
        return this.style;
    }
}

let emyeu2 = {
    style: 'Mup míp ú nu',
    v1: 'big size',
    v2: 'eo con ong',
    v3: 'big size 120cm'
}

let dacdiemchung = emyeu1.action.bind(emyeu2);
console.log(dacdiemchung());

</script>
// ouput: Mup míp ú nu

this lúc này đóng vai trò như một đại diện gọi ra properties (có chung methods) của các đối tượng.
 
Last edited:
Vậy thì phải làm nhiều với JS nhiều mới control tốt được this rồi. Em thì thấy thiên hạ ai ai cũng JS nên mới mò sang thử mà thấy đang từ C - > JS cũng nhiều cái hay phết chứ.
Nếu thím đang nghiên cứu JS thì có thể học Seri Ebook: "you don't know js". Seri này hay tuyệt luôn
 
Trong mỗi trường hợp cụ thể nó lại có cách dùng khác nhau đấy thím. Điểm chung là nó đại diện như một cái tên để trỏ đến biến, hàm nào đấy.

Liên hệ cuộc sống: nhiều khi ta có thể gọi và nhắc ai đấy với từ ấy: ấy ơi cho cái ấy vào cái ấy sâu sâu tý đằng ấy nhé hahaha.

Còn ví dụ code thì thím tham khảo.

JavaScript:
<script>
let emyeu1 = {
    style: 'Mình dây',
    action: function () {
        return this.style;
    }
}

let emyeu2 = {
    style: 'Mup míp ú nu',
    v1: 'big size',
    v2: 'eo con ong',
    v3: 'big size 120cm'
}

let dacdiemchung = emyeu1.action.bind(emyeu2);
console.log(dacdiemchung());

</script>
// ouput: Mup míp ú nu

this lúc này đóng vai trò như một đại diện gọi ra properties (có chung methods) của các đối tượng.
cái mình k hiểu là sao trong ES6 dùng class xong cái gì cũng phải this, this, éo hiểu sao nó k hiểu luôn là đang thực thi trong class đấy:angry:
 
cái mình k hiểu là sao trong ES6 dùng class xong cái gì cũng phải this, this, éo hiểu sao nó k hiểu luôn là đang thực thi trong class đấy:angry:

class là syntactic sugar th, chứ bản thân JS đâu phải OOP mà xài class.
Có xài class hay ko thì bản chất nó vẫn là một function nên this sẽ được quyết định lúc runtime chứ ko phải là class nào thì this sẽ thuộc class đó luôn.
 
cái mình k hiểu là sao trong ES6 dùng class xong cái gì cũng phải this, this, éo hiểu sao nó k hiểu luôn là đang thực thi trong class đấy:angry:
This trong class để nó trỏ giá trị cho tham số khi khởi tạo đối tượng đấy thím.
 
Back
Top