Return to Video

Object Methods (Video Version)

  • 0:01 - 0:06
    Trong bài hướng dẫn lần trước, ta đã tìm hiểu cách tạo một loại đối tượng để thể hiện hai đối tượng giống với Winston
  • 0:06 - 0:09
    rồi khởi chạy bằng hàm tạo.
  • 0:09 - 0:13
    Bây giờ, một loại đối tượng không chỉ liên kết với thuộc tính.
  • 0:13 - 0:19
    Nó còn có thể liên kết với chức năng. Hãy nghĩ về thế giới này và coi tất cả những loại chức năng trong đó
  • 0:19 - 0:26
    như con người. Ai cũng có cân nặng và tuổi tác, nhưng ta cũng có khả năng làm những thứ như ngủ, ăn, và lập trình.
  • 0:26 - 0:31
    Và ta muốn liên kết các hàm này với những loại đối tượng đó.
  • 0:31 - 0:36
    Trong chương trình này, cũng là chương trình mà ta đã làm việc từ lần trước, ta có một hàm,
  • 0:36 - 0:43
    drawWinston, mà ta gọi cho cả hai đối tượng Winston. Nếu ta có thể liên kết với loại đối tượng Winston
  • 0:43 - 0:49
    thì sẽ gọn gàng hơn đấy nhỉ? Hoàn toàn có thể đấy, và rất đơn giản.
  • 0:49 - 0:56
    Phía dưới hàm tạo, ta sẽ viết Winston – W viết hoa – chấm prototype,
  • 0:56 - 0:59
    và prototype đó, là từ mới mà chắc các bạn chưa từng nhìn thấy.
  • 0:59 - 1:06
    Prototype là một thuộc tính của đối tượng giúp ta có thể liên kết hàm
  • 1:06 - 1:13
    và điều đó có nghĩa là mọi đối tượng đóng vai trò instance sẽ liên kết với những hàm này.
  • 1:13 - 1:20
    Ta có thể nhập .prototype rồi chấm, tiếp đến tên hàm, như vậy ta nhập draw,
  • 1:20 - 1:26
    bằng, sau đó ta có thể lấy hàm drawWinston và
  • 1:26 - 1:33
    đưa vào trong đây. Được rồi vậy là ta đã liên kết một hàm draw
  • 1:33 - 1:40
    với prototype Winston. Điều đó có nghĩa là ta có thể gọi draw() trên bất cứ đối tượng Winston nào.
  • 1:40 - 1:45
    Được rồi, như vậy ta có thể gọi draw() trên winstonTeen hoặc winstonAdult.
  • 1:45 - 1:50
    Và khi đã có một hàm có khả năng gọi đối tượng như này,
  • 1:50 - 1:55
    ta gọi đó là “thủ tục”, hẳn các bạn đã từng nghe đến “thủ tục” rồi.
  • 1:55 - 1:58
    Vậy ta gọi đây là “thủ tục draw” đi. Được rồi.
  • 1:58 - 2:04
    Bây giờ ta sẽ xóa cái này, xóa cái này, và ta sẽ xem có gọi draw() được không.
  • 2:04 - 2:07
    winstonTeen.draw()
  • 2:07 - 2:14
    OK. Ở góc này có một thông báo lỗi, nội dung là “winstObject is not defined”.
  • 2:14 - 2:21
    Được rồi. Vậy, trước đó ta đã đưa đối số này vào drawWinston, tức đối tượng Winston
  • 2:21 - 2:26
    nhưng hiện tại ta không đưa vào nữa. Vì thế, ta có thể thay đổi cái này để đưa vào
  • 2:26 - 2:31
    và, ta sẽ nhập gì nhỉ? Ta sẽ phải đưa vào winstonTeen. Ok.
  • 2:31 - 2:38
    Thành công rồi, nhưng nhìn buồn cười quá. Tôi đã gọi hàm draw cho đối tượng rồi.
  • 2:38 - 2:44
    Đáng lẽ tôi không nên đưa cả đối tượng vào. Như vậy thừa quá.
  • 2:44 - 2:48
    Đúng vậy, đáng lẽ tôi không nên làm thế, vậy thì xóa thôi, bây giờ ta thử nghĩ nhé.
  • 2:48 - 2:54
    Nếu ta ở bên trong đối tượng, ta có thể sử dụng gì để tiếp cận thuộc tính của đối tượng?
  • 2:54 - 3:00
    Các bạn có thể nhìn vào hàm tạo, nhớ lại từ khóa đặc biệt “this” và thốt lên “à à”.
  • 3:00 - 3:09
    “Vậy nếu ta đổi cái này, thành cái này thì sao!” [cười] Như vậy ta đổi winstObject thành “this”.
  • 3:09 - 3:13
    Vì hiện tại ta đang ở bên trong đối tượng. Hàm này đang được đánh giá
  • 3:13 - 3:17
    trên đối tượng, vì vậy “this” sẽ tham chiếu tới đối tượng hiện tại.
  • 3:17 - 3:23
    Với cách đó ta chỉ cần nhập “this” và ta có thể tiếp cận tất cả mọi thuộc tính của đối tượng hiện tại.
  • 3:23 - 3:27
    Thấy chứ, ta thành công rồi. Thật thú vị phải không?
  • 3:27 - 3:32
    Sau đó ta có thể nhập winstonAdult.draw()
  • 3:32 - 3:38
    Tada! Và nó sẽ tiếp cận tới các thuộc tính của winstonAdult vì đó là đối tượng đang được gọi.
  • 3:38 - 3:46
    Đó là cái hay của từ khóa “this” này, mặc dù đôi khi hơi khó hiểu một chút.
  • 3:46 - 3:52
    Được rồi, vui thế đủ rồi, ta cùng thêm một thủ tục khác nhé. OK, Winston có thể làm gì nữa?
  • 3:52 - 4:01
    Cậu ta có thể nói chuyện chẳng hạn. Như vậy ta sẽ tạo Winston.prototype.talk, và ta có thể liên kết tới prototype bao nhiêu thủ tục cũng được.
  • 4:01 - 4:05
    Ta sẽ nhập “I’m Winston!”
  • 4:05 - 4:13
    Sau đó ta nhập this.s+20, và this.y+150.
  • 4:13 - 4:20
    Rồi, các bạn biết đấy, chẳng có gì xảy ra cả, nhưng tất nhiên đó là bởi tôi vẫn chưa gọi hàm.
  • 4:20 - 4:25
    Vậy cho phiên bản thiếu niên nói chuyện đi, winstonTeen.talk(). Các bạn tuổi teen nói chuyện liên mồm ấy.
  • 4:25 - 4:30
    I’m Winston, tada! Tiếp theo là winstonAdilt.talk().
  • 4:30 - 4:37
    Tada! Được rồi, hiện tại ta có loại đối tượng Winston mang các thuộc tính: nickname,
  • 4:37 - 4:45
    age, x, y; và có chức năng: behaviors, methods; đóng các vai trò khác nhau tùy theo thuộc tính.
  • 4:45 - 4:51
    Và ta có thể tạo bao nhiêu instance của Winston và gọi bất cừ thủ tục nào tùy thích.
  • 4:51 - 0:00
    Thật hay ho phải không?
Title:
Object Methods (Video Version)
Description:

more » « less
Video Language:
English
Duration:
04:54

Vietnamese subtitles

Incomplete

Revisions