原型和原型鏈

2021-07-28 01:22:57 字數 1004 閱讀 1283

原型鏈:例項物件與原型之間的連線,叫做原型鏈

function

human

()human.prototype.age = 22;

var a = new human();

console.log(a.age)

這裡的age掛載到了human的原型上面了。其實原型就是乙個物件。a為什麼能找到原型上面的物件呢?

這裡例項物件就是a

原型就是human.prototype

他們之間的鏈結就是原型鏈

function

human

()human.prototype.age = 22;

var a = new human();

a.age = 10

console.log(a.age) // 10

這裡面就可以將human.prototype.age = 22; 這個模擬成css裡面的class的權重

this.age = 20;這個模擬成css裡id的權重

a.age = 10 這個當然就是內聯元素權重最高,它會替換上面的this.age的值,因為this也就是a。所以最後的結果就是10

其實本質上是a先會在自己的prototype屬性上查詢有沒有 你需要的屬性,如果沒有的話就在查詢原型鏈上的。所以a.age是a上面的屬性所以它的權重是最高的

原型鏈的查詢是從內層一層一層往外查詢

並且原型鏈的最外層其實是 :object.prototype

function

human

() = 22;

object.prototype.age = 30;

var a = new human();

console.log(a.age)

console.log(a)//30 這個例子證明原型鏈的最終是object.prototype

原型 和 原型鏈

每乙個js物件 null除外 都和另乙個物件相關聯。另乙個 物件就是我們熟知的原型,每乙個物件都從原型繼承屬性。所有通過物件直接量建立的物件都具有同乙個原型物件,並可以通過js object.prototype 獲得對原型物件的引用。通過關鍵字new和構造函式呼叫建立的物件的原型就是建構函式的 pr...

原型和原型鏈

建構函式 function foo name age function 其實是 var a new object 的語法糖 var a 其實是 var a new array 的語法糖 function foo 其實是 var foo new function 的語法糖 new乙個物件的過程 建立乙...

原型和原型鏈

如果obj 是 例項物件 obj.proto obj.prototype obj.proto obj的建構函式下的.prototype 建構函式才有 prototype屬性 這是建構函式的原型 通過this設定的屬性和方法屬於例項化後物件的屬性和方法。建構函式原型下的方法和屬性 f.prototyp...