Tôi đang cố gắng để có được một đối tượng JavaScript để sử dụng các phép gán "này" của một đối tượng khác, cũng như giả định tất cả nguyên mẫu của đối tượng đó chức năng. Dưới đây là một ví dụ về những gì tôi đang cố gắng để hoàn thành:Chức năng Javascript sử dụng "this =" cho "Phía bên tay trái không hợp lệ trong bài tập"
/* The base - contains assignments to 'this', and prototype functions
*/
function ObjX(a,b) {
this.$a = a;
this.$b = b;
}
ObjX.prototype.getB() {
return this.$b;
}
function ObjY(a,b,c) {
// here's what I'm thinking should work:
this = ObjX(a, b * 12);
/* and by 'work' I mean ObjY should have the following properties:
* ObjY.$a == a, ObjY.$b == b * 12,
* and ObjY.getB == ObjX.prototype.getB
* ... unfortunately I get the error:
* Uncaught ReferenceError: Invalid left-hand side in assignment
*/
this.$c = c; // just to further distinguish ObjY from ObjX.
}
Tôi muốn được biết ơn đối với những suy nghĩ của bạn về làm thế nào để có ObjY bao hàm tập ObjX để 'này' (tức là không phải lặp lại tất cả các this.$* = *
bài tập trong ObjY's constructor) và có ObjY giả sử ObjX.prototype.
Suy nghĩ đầu tiên của tôi là để thử như sau:
function ObjY(a,b,c) {
this.prototype = new ObjX(a,b*12);
}
Lý tưởng nhất là tôi muốn tìm hiểu làm thế nào để thực hiện điều này một cách nguyên chủng (tức là không phải sử dụng bất kỳ của những sản phẩm thay thế OOP 'cổ điển' như Base2).
Có thể cần lưu ý rằng ObjY sẽ ẩn danh (ví dụ: factory['ObjX'] = function(a,b,c) { this = ObjX(a,b*12); ... }
) - nếu tôi có thuật ngữ đúng.
Cảm ơn bạn.
liên quan: [? Tại sao tôi không thể gán một giá trị mới cho “này” trong một hàm nguyên mẫu] (http: // stackoverflow.com/q/9713323/1048572) – Bergi