Hướng dẫn dùng bind val trong PHP
Nếu bạn đã từng sử dụng đối tượng this trong Javascript thì bạn sẽ thấy có một số vấn đề quan trọng khi sử dụng, nhất là với trường hợp sử dụng trong các hàm và các đối tượng. Show Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Đặt vấn đề với thisĐối tượng Xét bài toán sau đây: Bài viết này được đăng tại [free tuts .net] var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(){ console.log(this); // là đối tượng window console.log(this.domain); // nên thuộc tính domain không tồn tại console.log(this.author); /// nên thuộc tính author không tồn tại }); } }; blog.render(); Trong ví dụ này bị lỗi vì biến Trong hình trên thì phạm vi 2 đang nằm trong hàm thuộc đối tượng blog nên Để giải quyết vấn đề này thì ta sẽ khai
báo một biến đại diện cho đối tượng var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ var _self = this; this.showWebsite(function(){ console.log(_self); // là đối tượng this console.log(_self.domain); // ok console.log(_self.author); /// ok }); } }; blog.render(); Như vậy ta khai báo biến _self là giải quyết được vấn đề, cách này chỉ dành cho những bạn không biết đến hàm bind. 2. Khắc phục với hàm bind trong JavascriptNgoài cách xử lý thông thường trên thì trong ES5 cung cấp hàm var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(){ console.log(this); // là đối tượng this console.log(this.domain); // ok console.log(this.author); /// ok }.bind(this)); } }; blog.render(); Bạn hãy chạy thử để xem kết quả nhé, và như vậy hàm Bây giờ mình thử bind một kiểu dữ liệu khác xem thế nào nhé. var blog = { showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(args){ console.log(this); // This chính là mảng truyền vào }.bind(["freetuts.net", ""])); } }; blog.render(); Chạy lên bạn sẽ thấy kết quả như sau: Như vậy khi bạn truyền bất kì một loại dữ liệu
nào trong tham số của hàm 3. Lời kếtHàm bind được bổ sung vào core của Javascript kể từ version ES5, đây có thể được coi là hàm khắc phục nhược điểm sử dụng this của Javascript. Nếu bạn đã từng sử dụng qua ES6 thì nó có một cách khắc phục khác đó là sử dụng arrow function. Chúc bạn học tốt. Nếu bạn đã từng sử dụng đối tượng this trong Javascript thì bạn sẽ thấy có một số vấn đề quan trọng khi sử dụng, nhất là với trường hợp sử dụng trong các hàm và các đối tượng. Nội dung chính
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Đặt vấn đề với thisĐối tượng Xét bài toán sau đây: Bài viết này được đăng tại [free tuts .net] var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(){ console.log(this); // là đối tượng window console.log(this.domain); // nên thuộc tính domain không tồn tại console.log(this.author); /// nên thuộc tính author không tồn tại }); } }; blog.render(); Trong ví dụ này bị lỗi vì biến Trong hình trên thì phạm vi 2 đang nằm trong hàm thuộc đối tượng blog nên Để giải quyết vấn đề này thì ta sẽ khai báo một biến đại diện cho đối tượng var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ var _self = this; this.showWebsite(function(){ console.log(_self); // là đối tượng this console.log(_self.domain); // ok console.log(_self.author); /// ok }); } }; blog.render(); Như vậy ta khai báo biến _self là giải quyết được vấn đề, cách này chỉ dành cho những bạn không biết đến hàm bind. 2. Khắc phục với hàm bind trong JavascriptNgoài cách xử lý thông thường trên thì trong ES5 cung cấp hàm var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(){ console.log(this); // là đối tượng this console.log(this.domain); // ok console.log(this.author); /// ok }.bind(this)); } }; blog.render(); Bạn hãy chạy thử để xem kết quả nhé, và như vậy hàm Bây giờ mình thử bind một kiểu dữ liệu khác xem thế nào nhé. var blog = { showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(args){ console.log(this); // This chính là mảng truyền vào }.bind(["freetuts.net", ""])); } }; blog.render(); Chạy lên bạn sẽ thấy kết quả như sau: Như vậy khi bạn truyền bất kì một loại dữ liệu nào trong tham số của hàm 3. Lời kếtHàm bind được bổ sung vào core của Javascript kể từ version ES5, đây có thể được coi là hàm khắc phục nhược điểm sử dụng this của Javascript. Nếu bạn đã từng sử dụng qua ES6 thì nó có một cách khắc phục khác đó là sử dụng arrow function. Chúc bạn học tốt. Nếu bạn đã từng sử dụng đối tượng this trong Javascript thì bạn sẽ thấy có một số vấn đề quan trọng khi sử dụng, nhất là với trường hợp sử dụng trong các hàm và các đối tượng. Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Đặt vấn đề với thisĐối tượng Xét bài toán sau đây: Bài viết này được đăng tại [free tuts .net] var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(){ console.log(this); // là đối tượng window console.log(this.domain); // nên thuộc tính domain không tồn tại console.log(this.author); /// nên thuộc tính author không tồn tại }); } }; blog.render(); Trong ví dụ này bị lỗi vì biến Trong hình trên thì phạm vi 2 đang nằm trong hàm thuộc đối tượng blog nên Để giải quyết vấn đề này thì ta sẽ khai báo một biến đại diện cho đối tượng var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ var _self = this; this.showWebsite(function(){ console.log(_self); // là đối tượng this console.log(_self.domain); // ok console.log(_self.author); /// ok }); } }; blog.render(); Như vậy ta khai báo biến _self là giải quyết được vấn đề, cách này chỉ dành cho những bạn không biết đến hàm bind. 2. Khắc phục với hàm bind trong JavascriptNgoài cách xử lý thông thường trên thì trong ES5 cung cấp hàm var blog = { domain : "freetuts.net", author : "Nguyễn Văn Cường", showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(){ console.log(this); // là đối tượng this console.log(this.domain); // ok console.log(this.author); /// ok }.bind(this)); } }; blog.render(); Bạn hãy chạy thử để xem kết quả nhé, và như vậy hàm Bây giờ mình thử bind một kiểu dữ liệu khác xem thế nào nhé. var blog = { showWebsite : function (callbackFunction){ callbackFunction(); }, render : function(){ this.showWebsite(function(args){ console.log(this); // This chính là mảng truyền vào }.bind(["freetuts.net", ""])); } }; blog.render(); Chạy lên bạn sẽ thấy kết quả như sau: Như vậy khi bạn truyền bất kì một loại dữ liệu nào trong tham số của hàm 3. Lời kếtHàm bind được bổ sung vào core của Javascript kể từ version ES5, đây có thể được coi là hàm khắc phục nhược điểm sử dụng this của Javascript. Nếu bạn đã từng sử dụng qua ES6 thì nó có một cách khắc phục khác đó là sử dụng arrow function. Chúc bạn học tốt. |