当前位置:网站首页>Prototype chain inheritance
Prototype chain inheritance
2022-07-06 17:04:00 【Society, you Lei brother, life is hard, don't bend down】
Fell several times in the prototype chain , Today, I will classify it and summarize it a little . stay js in , Object has __proto__ attribute , Generally, this is called implicit prototype , The implicit prototype points to the prototype that constructs the object's constructor . stay js in , Everything is the object , Objects can be generated in the form of constructors and literals .
First of all, let's have a steak proto、prototype、constructor
__proto__: In fact, it is the prototype chain pointer ! It really points to the ancestor level object .
prototype: This is the prototype object that points to the constructor , In fact, the prototype object is just an ordinary object , It stores the properties and methods that all instance objects need to share !
constructor: Each prototype object contains a pointer to the constructor , Namely constructor
Here is a tip to help us judge , When seeking an object __proto__ Who was it when , First of all, we need to think about the constructor new Coming out , It points to this constructor prototype Prototype object . There is also a constructor that requires prototype, such as Array.prototype Is equal to [].__proto__ Of , There is also function new Function() Out object .
The following figure can help us understand the whole knowledge points of the prototype chain 
// Foo.__proto__ Because it's through new Function() establish , So the point to Function.prototype
// Foo.prototype Point to your prototype object , and foo.__proto__ identical
// Object,Array,Function It's all through Function Constructors new Coming out , So its __proto__ Point to Function.prototype
// Function.prototype => Function.prototype.__proto__ = Object.prototype => Object.prototype.__proto__ = null
// The running results below are true
console.dir(Foo.__proto__ == Function.prototype);
console.dir(Foo.__proto__.__proto__ == Object.prototype);
console.dir(Function.prototype.__proto__ == Object.prototype)
console.dir(Foo.prototype == foo.__proto__);
console.dir(Foo.__proto__.__proto__ == obj.__proto__);
console.dir(Function.prototype == Object.__proto__)
console.dir(Array.__proto__ == Function.prototype);
console.dir(Function.__proto__ == Function.prototype);
console.dir(foo.__proto__.__proto__ == Object.prototype)
Attach several interview questions to share with you
Topic 1
var F = function () {
}
Object.prototype.a = function () {
}
Function.prototype.b = function () {
}
var f = new F()
Method f Can only call a, Unable to use b,F You can call a Methods and b Method , because f.__proto__ No way Function.prototype This link
Topic two
function Parent(){
this.a = 'Parent'
}
function Tom() {
this.a = 'Tom'
}
Parent.__proto__.print = function(){
console.log(this.a)
}
Parent.print()
Tom.print()
var child = new Parent()
child.print()
// undefined
// undefined
// Uncaught TypeError: child.print is not a function
Parent and Tom All are Function Example , Equivalent to... Therefore Function.prototype There is a print Method , therefore Parent.print() You can call this method , But there is no return value , One reason is that Parent Method not implemented , One is because this At this point, it points to Parent,Parent There's no way a attribute , and child It creates an object based on the constructor ,child.__proto__.__proto__ === Object.prototype, Therefore, it cannot be found on its prototype chain print Method .
边栏推荐
猜你喜欢

Thank you for your invitation. I'm in the work area. I just handed in the code. I'm an intern in the next ByteDance

Alibaba cloud server docker installation mysql5.5

Description of project structure configuration of idea

Eureka single machine construction

这群程序员中的「广告狂人」,把抖音广告做成了AR游戏

~82 style of table

ByteDance technical Interviewer: what kind of candidate do I want to pick most

~76 sprite map

~79 Movie card exercise

Shell_ 07_ Functions and regular expressions
随机推荐
Activit零零碎碎要人命的坑
Which is more important for programming, practice or theory [there are some things recently, I don't have time to write an article, so I'll post an article on hydrology, and I'll fill in later]
Some instructions on whether to call destructor when QT window closes and application stops
Activiti directory (III) deployment process and initiation process
8086 CPU internal structure
~Introduction to form 80
8086 分段技术
Fdog series (I): think about it. It's better to write a chat software. Then start with the imitation QQ registration page.
TCP's three handshakes and four waves
TCP的三次握手和四次挥手
Idea resolving jar package conflicts
Eight part essay that everyone likes
The QT program compiled on CentOS lacks a MySQL driven solution
~87 animation
DS18B20数字温度计系统设计
Fdog series (4): use the QT framework to imitate QQ to realize the login interface, interface chapter.
High performance mysql (Third Edition) notes
算数运算指令
Shell_ 05_ operator
The daemon thread starts redis and modifies the configuration file