簡體   English   中英

為什么此繼承示例在我的計算機上不起作用?

[英]Why does this example of inheritance not work on my computer?

我有一些Java背景,但是現在我正嘗試用JavaScript和HTML編寫一些簡單的游戲。 我正在努力了解OOP的工作原理,因為似乎存在創建對象的不同方法? 我寫了引用朋友代碼的代碼段,但是控制台給了我“未捕獲的TypeError:無法設置未定義的屬性'roar'”。 為什么該代碼對他有效,但對我無效? 他在運行某種服務器端庫嗎?

test.js:

function Animal() {

    this.needsAir = true;

    this.roar = function() {

        console.log("roar");    

    }

}

function Bear() {

    Animal.call();

}

var init = function() {

    var bear = new Bear();
    bear.roar();
    console.log(bear.needsAir)

}

index.html:

<html>
    <head>
        <script type="text/javascript" src="./test.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            window.onload = function() {
                    init();
            }
        </script>
    </body>
</html>

您需要this傳遞給.call

function Bear() {

    Animal.call(this);

}

另外,您的原型繼承也不完整。

您的函數與this有所不同-嘗試使用apply方法,這會使您更進一步,例如;

function Bear() {
    Animal.apply(this);
}

在javascript中還有很多需要的東西,例如原型定義

您的Bear函數需要this傳遞給Animal調用。

為了更好地了解javascript繼承,您可以查看有關了解javascript繼承的博客

暫無
暫無

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

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