Javascript原型鏈及instanceof原理詳解
instanceof:用來判斷實(shí)例是否是屬于某個(gè)對(duì)象,這個(gè)判斷依據(jù)是什么呢?
首先,了解一下javascript中的原型繼承的基礎(chǔ)知識(shí):
javascript中的對(duì)象都有一個(gè)__proto__屬性,這個(gè)是對(duì)象的隱式原型,指向該對(duì)象的父對(duì)象的原型(prototype)。顯式的原型對(duì)象使用prototype,但是Object.prototype.proto=null;
判斷某個(gè)對(duì)象a是否屬于某個(gè)類A的實(shí)例,可以通過搜索原型鏈。
實(shí)例對(duì)象屬性查找順序是:實(shí)例對(duì)象內(nèi)部---->構(gòu)造函數(shù)原型鏈---->實(shí)例對(duì)象父對(duì)象的原型鏈。
//繼承機(jī)制 function A(){ } A.prototype.name='licui'; function B(){ } B.prototype = new A(); var a = new A(); var b = new B(); //b.name = 'hello'; console.log('A:',A); console.log('B:',B); console.log('a:',a); console.log('b:',b); console.log('A.prototype',A.prototype); console.log('B.prototype',B.prototype); console.log('a._proto_',a.__proto__); console.log('b._proto_',b.__proto__); console.log('a instanceof A:',a instanceof A); console.log('a instanceof Object:',a instanceof Object); console.log('b instanceof B:',b instanceof B); console.log('b instanceof A:',b instanceof A); console.log('b instanceof Object:',b instanceof Object);
執(zhí)行結(jié)果
constructor:是原型prototype上的屬性,實(shí)例上不具有該屬性。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
12個(gè)提高JavaScript技能的概念(小結(jié))
這篇文章主要介紹了12個(gè)提高JavaScript技能的概念(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05深入淺出ES6新特性之函數(shù)默認(rèn)參數(shù)和箭頭函數(shù)
這篇文章主要介紹了深入淺出ES6新特性之函數(shù)默認(rèn)參數(shù)和箭頭函數(shù) 的相關(guān)資料,需要的朋友可以參考下2016-08-08Javascript實(shí)現(xiàn)div層漸隱效果的方法
這篇文章主要介紹了Javascript實(shí)現(xiàn)div層漸隱效果的方法,涉及javascript操作頁面元素與樣式變化的相關(guān)技巧,需要的朋友可以參考下2015-05-05stream.js 一個(gè)很小、完全獨(dú)立的Javascript類庫
stream.js 是一個(gè)很小、完全獨(dú)立的Javascript類庫,它為你提供了一個(gè)新的Javascript數(shù)據(jù)結(jié)構(gòu):streams2011-10-10JavaScript排序算法動(dòng)畫演示效果的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狫avaScript排序算法動(dòng)畫演示效果的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10