天天看點

JavaScript--原型對象

原型對象(prototype)

  1. 我們所建立的每一個函數,解析器都會向函數中添加一個屬性prototype,這個屬性對應着一個對象,這個對象就是我們所謂的原型對象
  2. 如果函數作為普通函數調用prototype沒有任何作用,當函數以構造函數的形式 調用時(var x=new y)它所建立的對象中都有一個隐含的屬性,執行該構造函數的原型對象,我們可以通過__proto__來通路該屬性
  3. 原型對象就相當于一個公共的區域,所有同一個類的執行個體都可以通路到這個原型對象,我們可以将對象中共有的内容,統一設定到原型對象中。
  4. 當我們通路對象的一個屬性或方法時,它會先在對象自身中尋找,如果有則直接使用,如果沒有則會去原型對象中尋找,如果找到則使用。
  5. 原型對象也是對象,是以它也有原型,當我們使用一個對象的屬性或方法時,會先在自身中尋找,自身中如果有,則直接使用,如果沒有則取原型對象中尋找,如果原型對象中有,則使用,如果沒有則去原型的原型中尋找,查到object對象的原型,object對象的原型沒有原型,如果在object中依然沒有找到,則傳回undefined
mc.__protp__.__protp__.__protp__
           
JavaScript--原型對象

執行個體應用:

function Person(){
}

Person.prototype.sayName=function(){
     alert("大家好,我是"+this.name);
};

var p=new Person();
p.sayName();
           

為什麼要有原型對象

一個函數要很多地方要用,将函數定義在全局作用域,污染了全局作用域的命名空間,而且定義在全局作用域中也很不安全

繼續閱讀