> For the complete documentation index, see [llms.txt](https://javascriptuse.gitbook.io/advanced/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://javascriptuse.gitbook.io/advanced/javascript-chuyen-sau-5-vai-tro-cua-function-function-object-property-callback-constructor.md).

# \[JavaScript chuyên sâu] - 5 vai trò của Function: function, object, property, callback, constructor

https\://www\.youtube.com/watch?v=CkvAe1dgTmM\&list=PLmSai9ZRK6uyZ7L8k10pOSvQRhZbg1W4w\&index=5

```
// 1 JavaScript Hoisting
ham();
function ham() {
    console.log("Ham Declaretion");
}
//bien() // Error
const bien = function() {
    console.log("Ham Expression");
}
// 2 function la Object
const x = function(thamso) {
    return this.name + " - " + thamso;
}
let object1 = {name: "Vuong"};
console.log(x.call(object1,"Tham so 1"));
// 3 ham la property/method cua object
let hoccoban = {
    name: "Hoc co ban",
    getName: function() {
        return "Goi method: " + this.name
    }
}
let js = {
    name: "Hoc deep js"
}
console.log(hoccoban.getName.call(js));
```
