js重寫原型問題

2021-09-26 10:21:37 字數 634 閱讀 5065

首先先引入一道題

function a() ;

}a.prototype=function() ;

};var x=new a().do();

x 的值是:

這裡有四個選項

bar
報錯
foo
undefined
一開始可能會選擇bar,因為看起來重寫原型了。答案是foo.因為這裡原型被重寫了,切斷了原型和例項之間的關係。來看一下控制台

可能不好理解,我們現在換乙個方法,換成todo,如下

出現這個錯誤意味著找不到這個方法,說明我們原型和例項之間的關係被切斷了,所以沒辦法影響到例項。除非我們這樣寫

才能正常輸出

JS原型物件重寫問題

function person var friend new person 新建乙個person例項 重寫person的原型 person.prototype friend.sayname 返回結果是undefined var friend new person 重寫原型物件後新建person的例項...

JS重寫原型

對於乙個類,它天生自帶乙個屬性 prototype。但是有時候,我們會重寫類的原型。比如,在繼承的時候,我們想通過原型讓子類b繼承父類a的原型上的屬性和方法 公有繼承公有 functiona a.prototype.say function functionb b.prototype a.proto...

JS原型物件的問題

原型模式最大的問題是由其共享的本性所導致的。我們知道,原型中所有的成員是被很多例項共享的,這種共享對於函式非常合適。對於那些包含基本值的屬性倒也說得過去,畢竟可以通過在例項上新增乙個同名的屬性來隱藏原型中對應的屬性 然而,對於包含引用型別值的屬性來說,問題就比較突出了。來看下面的 function ...