考慮這段代碼:是否有可能檢測父方法是否被覆蓋?
function Parent(){};
Parent.prototype.myMethod = function()
{
return "hi!";
}
function Child(){};
Child.prototype = Object.create(new Parent());
var objChild = new Child();
//no override...
var output = objChild.myMethod();
alert(output); // "hi!"
//override and detect that in Parent.myMethod()
Child.prototype.myMethod = function()
{
var output = Parent.prototype.myMethod.call(this);
alert("override: " + output); // "hi!"
};
objChild.myMethod();
是否有可能以確定是否Parent.myMethod()
被稱爲「自然」,或通過「覆蓋」在那種情況下返回別的東西嗎?
'Object.create(new Parent());' - 哎!它應該是Object.create(Parent.prototype); – Bergi
@Bergi謝謝你的糾正!我是新的原型繼承 –
是否有真正的用例?如果是這樣,可能會有設計問題。 –