簡體   English   中英

為什么調用此原型方法無效?

[英]Why doesn't calling this prototype method work?

我正在通過各種教程快速學習javascript,而我剛買了一本中高級書。 我很快意識到我實際上一無所知。 所以我需要知道為什么這個原型方法不返回新值,或者當我在函數Ninja()的第一個聲明之外執行該原型方法時會發生什么

...此返回無法返回屬性“ swingSword”,盡管抱歉,我有一個請求。 您能用復雜的語言告訴我實例化,繼承,異步還是諸如此類的東西,而且還用普通的英語嗎?

function Ninja() {
    this.swingSword = function() {
        return true;
    };
}

Ninja.prototype.swingSword = function() {
    return false;
};

var ninja = new Ninja();
console.log(ninja.prototype.swingSword());, ///Edit "Calling the prototype method. Not the instance."

ninja.prototype.swingSword()不起作用,因為ninja.prototypeundefined 我認為您的意思是ninja.swingSword()

首先,我們需要了解,JavaScript將首先在當前對象中查找屬性。 只有找不到它,它才會進入原型鏈。

在這種情況下,由於您向該(當前實例)添加了swingSwordthis當您調用ninja.swingSword() ,將在當前實例中執行swingSword

問題在這里:ninja.prototype.swingSword()

您必須調用它:ninja.swingSword()

如果您想顯式調用原型方法,我相信這是語法:

var ninja = new Ninja();
console.log(Ninja.prototype.swingSword.call(ninja), "Calling the instance method, not the prototype method.");

因此,原型並未脫離ninja變量。 它是Ninja式的。

暫無
暫無

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

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