Tôi đã dành vài giờ đồng hồ cố gắng tìm một giải pháp cho vấn đề của mình nhưng có vẻ như là vô vọng.Làm thế nào để gọi một phương thức cha mẹ từ lớp con trong javascript?
Về cơ bản, tôi cần biết cách gọi phương thức gốc từ lớp con. Tất cả những thứ mà tôi đã thử cho đến nay kết thúc bằng cách không hoạt động hoặc viết quá mức phương thức gốc.
Tôi đang sử dụng đoạn mã sau để thiết lập OOP trong javascript:
// SET UP OOP
// surrogate constructor (empty function)
function surrogateCtor() {}
function extend(base, sub) {
// copy the prototype from the base to setup inheritance
surrogateCtor.prototype = base.prototype;
sub.prototype = new surrogateCtor();
sub.prototype.constructor = sub;
}
// parent class
function ParentObject(name) {
this.name = name;
}
// parent's methods
ParentObject.prototype = {
myMethod: function(arg) {
this.name = arg;
}
}
// child
function ChildObject(name) {
// call the parent's constructor
ParentObject.call(this, name);
this.myMethod = function(arg) {
// HOW DO I CALL THE PARENT METHOD HERE?
// do stuff
}
}
// setup the prototype chain
extend(ParentObject, ChildObject);
tôi cần phải gọi phương thức của cha mẹ đầu tiên và sau đó thêm một số công cụ hơn để nó trong lớp trẻ.
Trong hầu hết các ngôn ngữ OOP sẽ đơn giản như gọi parent.myMethod()
Nhưng tôi thực sự không thể hiểu được cách thực hiện của nó trong javascript.
Bất kỳ trợ giúp nào được đánh giá cao, cảm ơn bạn!
Nếu bạn muốn gọi nó là trong bối cảnh các trường hợp hiện tại, bạn phải làm 'ParentClass.prototype.myMethod.apply() hoặc' ParentClass.prototype.myMethod.call() ', giống như bạn làm với hàm tạo của bạn. – JMM
Chỉ cần thêm vào đó nếu bạn muốn gọi với đối số, họ đi bên trong hàm áp dụng hoặc gọi ('ParentClass.prototype.myMethod.call (this, arg1, arg2, arg3 ...);') –
Tôi không hiểu không. Nếu tôi gọi ParentClass.prototype.myMethod.call (điều này); từ myOethod của ChildObject, tôi đã gặp lỗi "Uncaught TypeError: Không thể đọc thuộc tính 'call' of undefined". – zhekaus