1. 程式人生 > >JavaScript 原型和原型鏈

JavaScript 原型和原型鏈

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 原型和原型鏈