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