当前位置:网站首页>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 .
边栏推荐
- 7-12 inventory code base
- 亮相Google I/O,字节跳动是这样应用Flutter的
- 在 vi 编辑器中的命令模式下,删除当前光标处的字符使用 __ 命 令。
- "One year after graduation, I won ACL best paper"
- Von Neumann architecture
- Go language uses the thrift protocol to realize the client and service end reports not enough arguments in call to oprot Writemessagebegin error resolution
- 8086 segmentation technology
- Activiti directory (I) highlights
- MySQL date function
- J'ai traversé le chemin le plus fou, le circuit cérébral d'un programmeur de saut d'octets
猜你喜欢

was unable to send heartbeat
![[graduation project] QT from introduction to practice: realize imitation of QQ communication, which is also the last blog post in school.](/img/ef/2072aac5f85c7daf39174784dec7ee.jpg)
[graduation project] QT from introduction to practice: realize imitation of QQ communication, which is also the last blog post in school.

Data config problem: the reference to entity 'useunicode' must end with ';' delimiter.

Activit fragmented deadly pit

IDEA断点调试技巧,多张动图包教包会。

Ruoyi-Cloud 踩坑的BUG

ByteDance 2022 school recruitment R & D advance approval publicity meeting, students' top 10 issues

~84 form supplement

谢邀,人在工区,刚交代码,在下字节跳动实习生

MySQL字符串函数
随机推荐
The difference between URI and URL
谢邀,人在工区,刚交代码,在下字节跳动实习生
这群程序员中的「广告狂人」,把抖音广告做成了AR游戏
After the subscript is used to assign a value to the string type, the cout output variable is empty.
"One year after graduation, I won ACL best paper"
Monomer application concept
数据传送指令
Shell_ 03_ environment variable
MySQL optimization notes
Activiti directory (IV) inquiry agency / done, approved
8086 内存
The 116 students spent three days reproducing the ByteDance internal real technology project
原型链继承
How to generate six digit verification code
~87 animation
Fdog series (V): use QT to imitate QQ to realize login interface to main interface, function chapter.
Conception du système de thermomètre numérique DS18B20
100张图训练1小时,照片风格随意变,文末有Demo试玩|SIGGRAPH 2021
Erlang installation
Ce n'est qu'en apprenant que c est à la hauteur des attentes Top5 s1e8 | s1e9: caractères et chaînes & opérateurs arithmétiques