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

資訊專欄INFORMATION COLUMN

對象、原型與原型鏈

浠ラ箍 / 3385人閱讀

摘要:的過程創建一個空對象,讓指向它,通過,等賦值,最終返回。原型和實例在上面代碼中,是原型,是它的實例。實例的對應原型的即所有對象都是的實例,并繼承的屬性和方法。這個串起來的鏈就是原型鏈。

Object.defineProperty
let obj = {
    key0: 0
}
Object.defineProperty(obj, "key1", {
    value: "1",
    writable: false, // 是否可寫,默認false。obj.key1="1.0"; 不可寫,不起作用
    configurable: false, // 是否可以再次配置,默認false。不能再設置value,writable,configurable等屬性
    enumerable: false // 是否可枚舉,默認false。不能在(for...in)中遍歷
})
console.log(Object.getOwnPropertyDescriptor(obj, "key0")); // {value: 0, writable: true, enumerable: true, configurable: true}
console.log(Object.getOwnPropertyDescriptor(obj, "key1")); // {value: "1", writable: false, enumerable: false, configurable: false}
判斷對象是否有指定屬性或方法而不是繼承的

obj.hasOwnProperty("toString")

獲取對象屬性的數組
Object.getOwnPropertyNames(obj)

Object.keys(obj) // 獲取不到不可枚舉(enumerable: false)的屬性
Object.assign

assign() 用于將所有可枚舉屬性的值從一個或多個源對象復制到目標對象。同 $.extend();

Object.assign({}, obj); // {key0: "0"}
$.extend({}, obj); // {key0: "0"}
對象和JSON的轉化
let xmObj = {
    name: "xiaoming",
    age: 20,
    sex: "男",
    isMarry: false
}
// 序列化成JSON
var res = JSON.stringify(xmObj, null, "  "); // typeof res == "string"
// 解析成對象
var resO = JSON.parse(res); // typeof resO == "object"
先看一段代碼
function Person(name, age){
    this.name = name;
    this.age = age;
}
Person.prototype.work=function(){}

function Programmer(name,age){
    Person.call(this,name,age);
}
Programmer.prototype = new Person();
Programmer.prototype.code=function(){}; // 如果寫成對象會覆蓋繼承來的屬性和方法,即賦值為{...}。

let example = new Programmer("碼農",24); // 創建實例,example是實例,Programmer是原型。

Object.prototype.sth = function(){}
new的過程:創建一個空對象,讓this指向它,通過this.name,this.age等賦值,最終返回this。
原型和實例

在上面代碼中,Programmer是原型,example是它的實例。用instanceof檢測,有
example instanceof Programmer === true
example instanceof Person === true
example instanceof Object === true

通過example.constructor屬性返回對創建此對象的數組函數的引用。
example.constructor===Person
example.constructor===Person.prototype.constructor
但是constructor 屬性易變,不可信賴,它可以通過修改prototype而手動修改。

實例的__proto__對應原型的prototype
example.__proto__===Programmer.prototype
example.__proto__.__proto__===Person.prototypeProgrammer.prototype.__proto__
example.__proto__.__proto__.__proto__===Object.prototype
所有對象都是Object的實例,并繼承Object.prototype的屬性和方法。

原型鏈

找一個屬性,首先在example.__proto__去找,如果沒有,再去example.__proto__.__proto__找,……,再到Object.prototype,一直到null,即Object.prototype.__proto__ === null。這個串起來的鏈就是原型鏈。
比如:example.code、example.work、example.doSth、example.toString都有,而example.foo就為undefined。

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

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

相關文章

  • 《javascript高級程序設計》筆記:原型圖解

    摘要:不理解沒關系,下面會結合圖例分析上一篇高級程序設計筆記創建對象下一篇高級程序設計筆記繼承參考之原型鏈的解讀三張圖搞懂的原型對象與原型鏈繼承與原型鏈 文章直接從原型圖解開始的,如果對一些概念不太清除,可以結合后面幾節查看 1. 圖解原型鏈 1.1 鐵三角關系(重點) function Person() {}; var p = new Person(); showImg(https://s...

    vspiders 評論0 收藏0
  • 【5】JavaScript 函數高級——原型原型深入理解(圖解)

    摘要:探索是如何判斷的表達式如果函數的顯式原型對象在對象的隱式原型鏈上,返回,否則返回是通過自己產生的實例案例案例重要注意的顯示原型和隱式原型是一樣的。面試題測試題測試題報錯對照下圖理解 原型與原型鏈深入理解(圖解) 原型(prototype) 函數的 prototype 屬性(圖) 每個函數都有一個prototype屬性,它默認指向一個Object空對象(即稱為:原型對象) 原型對象中有...

    馬龍駒 評論0 收藏0
  • 進擊JavaScript之(四)原型原型

    摘要:每一個由構造函數創建的對象都會默認的連接到該神秘對象上。在構造方法中也具有類似的功能,因此也稱其為類實例與對象實例一般是指某一個構造函數創建出來的對象,我們稱為構造函數的實例實例就是對象。表示該原型是與什么構造函數聯系起來的。 本文您將看到以下內容: 傳統構造函數的問題 一些相關概念 認識原型 構造、原型、實例三角結構圖 對象的原型鏈 函數的構造函數Function 一句話說明什么...

    XBaron 評論0 收藏0
  • JavaScript中的原型原型

    摘要:前言作為前端高頻面試題之一,相信很多小伙伴都有遇到過這個問題。 前言 作為前端高頻面試題之一,相信很多小伙伴都有遇到過這個問題。那么你是否清楚完整的了解它呢? 國際慣例,讓我們先拋出問題: 什么是原型、原型鏈 它們有什么特點 它們能做什么 怎么確定它們的關系 或許你已經有答案,或許你開始有點疑惑,無論是 get 新技能或是簡單的溫習一次,讓我們一起去探究一番吧 如果文章中有出現紕...

    laoLiueizo 評論0 收藏0
  • 原型一:原型原型

    摘要:說白了,原型就是構造函數用來構造新實例的模板對象。什么是原型鏈先回答什么是原型。例如這個原型的原型就是這個構造函數的,既這個原型對象。這些原型對象通過像鏈子一樣連起來,就叫做原型鏈。 原型鏈初步學習 這篇博客只是我初步理解原型鏈的一個個人學習筆記,寫的比較粗略,且有的地方可能理解錯誤. 更多更專業的關于原型鏈的解釋請看JavaScript深入之從原型到原型鏈和阮一峰的博客:Javas...

    MudOnTire 評論0 收藏0
  • 原型原型理解

    原型與原型鏈理解 1. 什么是原型 JavaScript是一種簡易的腳本語言,其是由對象構成。每一個JavaScript對象(除null外)都和另一個對象相關聯,另一個對象就是原型。也就是說,任何一個對象都有原型這個屬性。 隱式原型(_proto_):上面說的這個原型是JavaScript中的內置屬性[[prototype]],此屬性繼承自object對象,在腳本中沒有標準的方式訪問[[pro...

    YJNldm 評論0 收藏0

發表評論

0條評論

浠ラ箍

|高級講師

TA的文章

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