国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

__proto__(隱式原型)與prototype(顯式原型)

plus2047 / 1602人閱讀

摘要:最近了解了一下與簡單的說它就是一個屬性且屬性的值為地址,指向一個對象。而它通常為函數的屬性。那指向誰呢構造函數是的實例所以的判斷沿著原型鏈不斷的向上查找分別判斷是否與相等

最近了解了一下__proto__與prototype:
prototype
1.簡單的說它就是一個屬性且屬性的值為地址,指向一個對象。
而它通常為函數的屬性。
2.它主要用來共享屬性和方法(常用于構造函數創建實例對象給實例對象共享屬性)
3.主要用來被訪問
4.判斷自有屬性和原型屬性 一般用hasOwnProperty()

function Person(name){
    this.name = name;
}
typeof(Person.prototype) //"object"
Person.prototype.publicData = "test"
Person.privateData = "test1"
Person.hasOwnProperty("privateData") //true
Person.hasOwnProperty("publicData") //false
var bob = new Person("bob")
var mary = new Person("mary") //bob和mary共享publicData屬性

__proto__:
1.基本所有的對象有該屬性
2.用來構建原型鏈訪問構造方法中的顯示原型

如何訪問?

var arr = new Array()
arr.__proto__ === Array.prototype //true
arr.push(1)
arr.hasOwnProperty("push")//false
"push" in arr//true

以上代碼:Array是arr的構造函數,arr的隱式原型指向Array的顯示原型,arr中并無push的方法,卻能調用到push這個方法
這里的push方法調用的是Array.prototype中的方法
理論上原型鏈可以無限長

function Foo(){}
function Bar(){}
Foo.prototype = new Bar()

此時Foo繼承了Bar: Foo的實例在訪問原型鏈的時候先訪問Foo的顯示原型在訪問Bar的顯示原型

Foo.prototype = {}

當然我們可以手動修改Foo的繼承,以上兩種方法重寫了Foo.prototype,所以Foo.prototype.constructor也跟著改變了。

那Foo.__proto__指向誰呢? 構造函數是Function的實例 所以Foo.__proto__ === Function.prototype

instanceof的判斷:

function Foo(){}
Foo instanceof Function
Foo.__proto__.__proto__ ..... === Function.prototype? 

Foo沿著原型鏈不斷的向上查找 分別判斷是否與Function.prototype相等

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94053.html

相關文章

  • 這樣理解原型原型鏈比較簡單

    摘要:屬性這是每個對象都有的隱式原型屬性,指向了創建該對象的構造函數的原型。 原型 在JavaScript中,有兩個原型,分別是 prototype 和 _proto_注:在ECMA-262第5版中管這個 _proto_ 叫 [[Prototype]] prototype 屬性:這是一個顯式原型屬性,只有函數才擁有該屬性。_proto_ 屬性:這是每個對象都有的隱式原型屬性,指向了創建該對象...

    csRyan 評論0 收藏0
  • javascript 之 prototype__proto__

    摘要:首先,先介紹一個今天的主角隱式原型與顯式原型什么是和顯式原型在每一個函數請注意是函數創建之后都會有一個叫的屬性,這個屬性指向的是函數的原型對象。最后總結一下對象有屬性指向該對象的構造函數的原型對象。 首先,先介紹一個今天的主角:proto(隱式原型)與prototype(顯式原型) 什么是__proto__和prototype? prototype(顯式原型)在每一個函數(請注意是函數...

    WrBug 評論0 收藏0
  • JS 中的 __proto__ prototype

    摘要:在這篇文章中,他介紹了一種實現繼承的方法,這種方法并沒有使用嚴格意義上的構造函數。的左值一般是一個對象,右值一般是一個構造函數,用來判斷左值是否是右值的實例。 __proto__ 探究 __proto__隱式原型與prototype顯式原型是個容易令人混淆的概念,簡而言之prototype是構造函數用來被自己的實例繼承的原型,而_proto_是實例用來繼承父類原型的載體。 1. 是什么...

    Donald 評論0 收藏0
  • 弄清原型原型

    摘要:四條大規則原型和原型鏈,大體可以用以下幾條規則概括,弄清楚了這幾條,也就基本吃透了原型和原型鏈。上圖幫助理解吧實例的隱式原型屬性指向其構造函數的顯式原型屬性。原型相關方法判斷一個對象是否在原型鏈上可以用,判斷某一個屬性是否是自身屬性可以用。 四條大規則 原型和原型鏈,大體可以用以下幾條規則概括,弄清楚了這幾條,也就基本吃透了原型和原型鏈。 所有的引用類型都有一個__proto__屬性...

    enda 評論0 收藏0
  • js基礎(二):構造函數原型(看完必懂)

    摘要:寫在最前構造函數和原型模式的使用場景很廣泛,但因為對概念的混淆不清導致無法熟練掌握。換句話說,不必在構造函數中定義對象實例的信息,而是可以將這些信息直接添加到原型對象中,比如下面的方法。 寫在最前:構造函數和原型模式的使用場景很廣泛,但因為對概念的混淆不清導致無法熟練掌握。切圖帶你從代碼和流程圖一步步攻克,純干貨,建議收藏詳看,原型模式理解圖非常重要,務必多看幾遍! 前往查看demo源...

    BDEEFE 評論0 收藏0

發表評論

0條評論

plus2047

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<