了解 JS 原型

2022-01-23 06:44:56 字數 2177 閱讀 3207

當建立了乙個函式時,就會根據一組特定的規則為該函式建立乙個 prototype 屬性,這個屬性指向函式的原型物件。在預設情況下,所有原型物件都會自動獲得乙個constructor 的屬性 這個屬性指向乙個prototype

屬性所在函式的指標

看個例子

當person物件被建立後person物件會有乙個prototype屬性,它指向了預設為person建立乙個原型物件 person prototype 這裡邊有個屬性 constructor它保留了 物件person的引用

如果繼續為原型物件新增其它方法,其方法都會在 person prototype原型物件中

如果例項化了乙個person物件那他的例項同樣也是會指向 person的原型物件,從而最終物件的所有例項都可訪問這個原型物件中的屬性

function

person(){}

person.prototype.getname =function()

var person1 = new

person();

var person2 = new

person();

console.log(person1.getname());

//zhang

console.log(person2.getname());//

zhang

因為物件例項中的[prototype]屬性是指向原型物件的,所以給原型物件新增的方法對所有例項共享

原型重寫

function

person(){}

person.prototype.getname =function()

//重寫原型物件

person.prototype =

}

某些情況下,想將原型物件中的方法定義在乙個物件中時,可以直接重寫原型物件。因為所有物件都是繼承自object物件,所以所果重寫原型後沒有將contructor的指向重新指回person的話,其constructor屬性就會預設指向ojbect 

如下例,也就是說重寫後不進行重新指向,會切段物件與原型物件的關係 

var friend = new

person.prototype.constructor();

console.log(friend.constructor == object);//

false

function

supertype(){}

supertype.prototype.getname= function

()

function

subtype(){}

subtype.prototype = new

supertype();

var sub = new

subtype();

console.log(sub.getname());

//zhang 可以訪問super原型物件的方法

//constructor指向了supertype

getprototypeof() 是es5中用來得到obj物件的原型物件的標準方法 object.getprototypeof(sub)==subtype.prototype //true

isprototypeof     //是用來判斷要檢查其原型鏈的物件是否存在於指定物件例項中,是則返回true,否則返回false

hasownprototype  //是用來判斷乙個物件是否有你給出名稱的屬性或物件。不過需要注意的是,此方法無法檢查該物件的原型鏈中是否具有該屬性,該屬性必須是物件本身的乙個成員

hasprototypeproperty //是否為原型物件的屬性

__proto__ 就是prototype物件

JS 物件 JS原型 原型鏈

參考學習 js物件 構造器函式 建立物件的函式。物件分為普通物件和函式物件。所有物件都有 proto 屬性 函式物件不止有 proto 屬性,還有prototype屬性 稱為原型物件 1.new function 產生的物件都是函式物件。2.所有函式物件的 proto 都指向function.pro...

簡單了解prototype原型

prototype是典型物件導向語言,在js中經常用到class 類 類就是物件的方法,物件就是類的例項。1.建構函式 constructor 建構函式,就是提供了乙個生成物件的模板並描述物件的基本結構的函式。特點 1 乙個建構函式,可以生成多個物件,每個物件都有相同的結構。2 建構函式的函式名首字...

清晰了解原型鏈

看完這段 核心 原型物件和原型鏈 function person name,age person.prototype.name 名字 person.prototype.age 99 person.prototype.showname function person.prototype.showage...