JavaScript 原型和原型鏈
阿新 • • 發佈:2019-03-16
null asc ast name 符號 不可 class def argument
原型
原型是function對象的一個屬性,它定義了構造函數制造出的對象的公共祖先。通過該構造函數產生的對象,可以繼承該原型的屬性和方法。原型也是對象
- 提取公共屬性到原型中
- 通過後代無法修改、增加、刪除原型
- constructor(系統自帶隱藏屬性淺粉色),構造器,返回對象的構造函數,可以手動更改
Person.prototype.LastName="ge" function Person(){ this.Name="xuerongh" } var person=new Person() console.log("原型屬性"+person.LastName);//原型屬性ge console.log("自身屬性"+person.Name);//自身屬性xuerongh console.log("構造器"+person.constructor);//構造器function Person(){this.Name="xuerongh"}
- __proto__指向原型,可以自己修改為別的對象
function Person() { //var this = { //__proto__: Person.prototype //} }
原型鏈
由__proto__是任何對象有的屬性,__proto__指向原型,js中萬物皆對象,__proto__形成的鏈條就是原型鏈。
- Object.create(原型)
- 絕大多數對象最終都會繼承自Object.prototype(Object.create(null)不繼承)
- toString():undefined、null不能調用,沒有包裝類、沒有原型無法調用toString()。123.tostring()不可以調用.會當作數學符號優先計算。
javascript精度不準
call/apply
- 改變this指向
- call需要把實參按照形參的個數傳進去,apply 需要傳一個arguments
例
JavaScript 原型和原型鏈