簡體   English   中英

函數的Javascript類繼承

[英]Javascript Class Inheritance For Functions

我已經設置了一個基類作為標准:

MyBase = function() {
    this.m_Stuff = 0; // etc
};
MyBase.prototype.MySuperFunction = function (arg1) {
    alert("Hello" + arg1);
};

接下來,我設置了另一個繼承MyBase的類

MyChild = function () {
    MyBase.call(this);
    this.m_OtherStuff = 1; // etc
};
MyChild.prototype = new MyBase(); // innherit

但那時(這是我不知道該怎么做)我想用更好的一個覆蓋MyBase的MySuperFunction,但是在這個過程中調用基類函數:

MyChild.prototype.MySuperFunction = function (arg1, arg2) {
    MyBase.MySuperFunction(arg1); // THIS LINE IS THE LINE I DONT KNOW HOW TO DO
    alert("You is a " + arg2 + "'th level idiot");
};

它想要覆蓋的子類是基類函數,但是想要在新的改進定義中調用基類函數。

這是可能的,如果是的話,怎么辦呢?

它類似於繼承的構造函數中的調用。 你仍然可以在MyBase.prototype.MySuperFunction (你分配它)的地方訪問“超級”方法,所以使用:

MyBase.prototype.MySuperFunction.call(this, arg1);

對於更動態的方法,您甚至可以使用Object.getPrototypeOf來獲取原型,但請注意它與動態繼承一起使用。 如果你有許多方法需要調用它們的父節點,那么將MyBase.prototype別名作為一個super變量可以是有用的,它可以被Child原型對象上的所有函數訪問(參見這個例子的答案 ))。

請申請以下內容: -

MyBase.prototype.MySuperFunction.call(this, arg1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM