在JavaScript內(nèi)部,對(duì)象的屬性和方法追溯機(jī)制是通過(guò)所謂的prototype鏈來(lái)實(shí)現(xiàn)的。當(dāng)用new操作符構(gòu)造對(duì)象時(shí),也會(huì)同時(shí)將構(gòu)造函數(shù)的prototype對(duì)象指派給新創(chuàng)建的對(duì)象,成為該對(duì)象內(nèi)置的原型對(duì)象。對(duì)象內(nèi)置的原型對(duì)象應(yīng)該是對(duì)外不可見(jiàn)的問(wèn)題描述?:上面這句話??不能理解什么意思
還有下面的第17行代碼,也理解不了!1?????function?Person(name)???//基類構(gòu)造函數(shù)?2?????{?3?????????this.name?=?name;?4?????};?5??????6?????Person.prototype.SayHello?=?function()??//給基類構(gòu)造函數(shù)的prototype添加方法?7?????{?8?????????alert("Hello,?I'm?"?+?this.name);?9?????};10?????11?????function?Employee(name,?salary)?//子類構(gòu)造函數(shù)12?????{13?????????Person.call(this,?name);????//調(diào)用基類構(gòu)造函數(shù)14?????????this.salary?=?salary;15?????};16?????17?????Employee.prototype?=?new?Person();??//建一個(gè)基類的對(duì)象作為子類原型的原型,這里很有意思18?????19?????Employee.prototype.ShowMeTheMoney?=?function()??//給子類添構(gòu)造函數(shù)的prototype添加方法20?????{21?????????alert(this.name?+?"?$"?+?this.salary);22?????};23?24?????var?BillGates?=?new?Person("Bill?Gates");???//創(chuàng)建基類Person的BillGates對(duì)象25?????var?SteveJobs?=?new?Employee("Steve?Jobs",?1234);???//創(chuàng)建子類Employee的SteveJobs對(duì)象26?27?????BillGates.SayHello();???????//通過(guò)對(duì)象直接調(diào)用到prototype的方法28?????SteveJobs.SayHello();???????//通過(guò)子類對(duì)象直接調(diào)用基類prototype的方法,關(guān)注!29?????SteveJobs.ShowMeTheMoney();?//通過(guò)子類對(duì)象直接調(diào)用子類prototype的方法30?31?????alert(BillGates.SayHello?==?SteveJobs.SayHello);?//顯示:true,表明prototype的方法是共享的
javascript 里的 prototype 的問(wèn)題
一人我編程累
2017-12-09 20:57:35