国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

簡單解析JavaScript中的__proto__屬性

2024-05-06 16:30:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript中的__proto__屬性,對于JavaScript中所謂的對象來講,它指向對象的原型prototype,需要的朋友可以參考下
 

JavaScript是一個面向對象語音,即一切皆對象。

那么怎么生成對象?在Java的世界里,對象是由類(Class)實例出來的,通俗地說,就是將事物抽象成一個模具,用這個模具(類)生產出一個個具體的實物(對象)。

可是JS中沒有類這個概念,有的是“原型”,對象是由原型衍生出來的。通俗地說,在JS的世界里,“原型”并不是一個模具,而是一個具體的實物(對象)。所有對象都是由另一個對象衍生出來的,而這個被衍生的對象就是所謂的“原型對象”。

在javascript中有三類對象,1用戶創建的對象,2構造函數的對象,3原型對象

  • 用戶創建的對象,一般意義上使用new語句顯式構造的方法。
  • 構造函數的對象,普通的構造函數,即通過new調用生成普通對象的函數
  • 原型對象,構造函數prototype屬性指向的對象。

這三個對象中每一個類都有一個屬性-__proto__屬性,它們指向該對象的原型,從任何對象沿用它開始遍歷都可以追溯到Object.prototype。

構造函數都有prototype對象,它指向一個原型對象,通過該構造函數創建對象的時候,被創建的對象的__proto__屬性將指向構造函數的prototype屬性。

原型對象有一個constructor屬性,該屬性指向它對應的構造函數。

Talk is cheap, show me the code! 咱們來看看代碼:

var obj = {};console.log(obj);

JavaScript,proto

咱們將__proto__展開看看:是一些默認方法。

JavaScript,proto

你一定會發生這個__proto__對象中也有一個__proto__對象,正如我們剛才說的,每個對象都有一個__proto__屬性指向它的原型對象。我們打印一下這個__proto__中的__proto__:

console.log(obj.__proto__.__proto__); //--> null

結果是null,說明已經到了頂層原型對象。obj是用大括號{}定義的,obj的原型對象自然是JS的頂層對象。

咱們再看一端代碼,加強下理解:

var parent = {  name : "parent"};var child = {  name : "child",  __proto__ : parent};var subChild = {  name : "subChild",  __proto__ : child}console.log(subChild);

JavaScript,proto

  • subChild.__proto__ --> child
  • child.__proto__ --> parent
  • parent.__proto__ --> 頂層原型對象


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 师宗县| 澎湖县| 泰安市| 永平县| 麦盖提县| 崇州市| 房产| 仁怀市| 银川市| 寿阳县| 陆良县| 井研县| 和田县| 隆化县| 扎赉特旗| 毕节市| 花垣县| 广饶县| 汉阴县| 凤庆县| 贞丰县| 界首市| 大庆市| 岑巩县| 宜君县| 天峨县| 高雄县| 乌苏市| 仁寿县| 城市| 斗六市| 白银市| 抚松县| 新竹县| 基隆市| 新丰县| 新民市| 遂溪县| 聂荣县| 绥德县| 丹寨县|