JavaScript高階 原型

2021-07-24 11:56:31 字數 1613 閱讀 4022

1.什麼是原型

原型是 js 中非常特殊乙個物件,當乙個函式建立之後,會隨之就產生乙個原型物件,當通過這個函式的建構函式建立了乙個具體的物件之後,在這個具體的物件中就會有乙個屬性指向原型。

//第一種狀態

//定義了乙個物件

function person()

//第二種狀態,這樣賦值就會賦在原型物件中

//使用原型來給物件賦值

//這樣就講乙個物件的屬性和方法放在了該物件的原型中

//外界是無法訪問到這樣資料的

person.prototype.name = 麗麗";

person.prototype.age = 18;

person.prototype.say = function()

//第三種狀態

var p1 = new person();

//此時呼叫的是原型中的,因為自己中沒有這些屬性和方法

p1.say();//正常訪問了

// say();//報錯了

//可以通過如下的方式檢測p1是不是指向person的原型物件

// alert(person.prototype.isprototypeof(p1))

var p2 = new person();

p2.name = "李先生";

p2.age = 22;

p2.say();

1.1原型的記憶體模型如圖:

1.2常見的原型檢測方式

可以通過如下的方式檢測p1是不是指向person的原型物件

alert(person.prototype.isprototypeof(p1))

//檢測p1的構造器是否指向person物件

alert(p1.constructor == person)

//檢測某個屬性是不是自己記憶體中的

alert(p1.hasownproperty("name"));

alert(p2.hasownproperty("name"))

檢測在某個物件中自己或者對應的原型中是否存在某個屬性的方法:

alert("name" in p1);//true

delete p2.name;//true

alert("name" in p2);//true

//原型和自己中都沒有***屬性

alert("***" in p1);//false

1.3原型重寫:
function person() 

person.prototype =

}var p1 = new person();

p1.say()

var p2 = new person();

p2.name = "李先生";

p2.age = 22;

p2.say();

這種方法是將物件的原型覆蓋了。解決方法:手動指向person:constructor:person

javascript考點高階 原型

一 jquery和zepto的簡單使用 jqury test 1 jqury test 2 jqury test 3 jquery test in div 二 zepto如何使用原型 function window function z dom,selector this.length len th...

javascript高階 原型與繼承

原型繼承的本質就是一條原型鏈,物件會沿著這條鏈,訪問鏈裡的方法屬性.物件的 proto 屬性就是用於訪問它的原型鏈的上一層 考慮以下物件 1.所有物件的原型 object.prototype 2.所有函式的原型 function.ptototype 3.函式的建構函式 function 4.物件的建...

javascript 高階 基於原型鏈的繼承

function parent parent.prototype.parentvalue function function children 將children的原型指向parent的乙個例項,完成繼承 children.prototype new parent children.prototyp...