構造函數的原型對象之prototype小解

在js中我們常常使用構造函數
今天我們來講一下構造函數的prototype屬性

function Person(){
}
var a=new Person();
console.log(a)


在檢查下發現Person類中有個prototype屬性,這就是我們今天要說的原型對象
當我們在全局作用域中創建一個個構造函數時,就會對全局作用域造成污染,如上代碼,當我們再次創造一個Person構造函數時,第一Person構造函數就會被覆蓋。如需解決這個問題,我們就需要用到構造函數的prototype屬性。
      我們先來了解一下他的基本性質

  1. 每個構造函數都有prototype屬性
  2. 子元素可以使用__proto__(兩個下劃線)去訪問構造函數的protype屬性
    function Person(){ } var a=new Person(); console.log(a.__proto__)
  3. 每個構造函數的protype不相等
    在這裏插入圖片描述
    在這裏插入圖片描述
    瞭解他的基本性質之後,我們就可以開始用了
function Person(){
	Person.prototype.b=123;
}
var a=new Person();
console.log(a.b)

在這裏插入圖片描述
若我們不想用初始值,可以用子元素重新定義

function Person(){
	Person.prototype.b=123;
}
var a=new Person();
a.b="zhangsan";
console.log(a.b)

在這裏插入圖片描述
ps:當子元素重新定義後Person.prototype.b還是等於123,

然後我們可以這樣用

function Person(){
	Person.prototype.b=function(){
		console.log("zzg")
	};
}
var a=new Person();
a.b();

在這裏插入圖片描述
這樣我們創建的b方法就不會污染全局作用域,不容易被下面的代碼覆蓋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章