当前位置:网站首页>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 .
边栏推荐
- How to configure hosts when setting up Eureka
- ~87 animation
- 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]
- 面试集锦库
- MySQL日期函数
- Jedis
- 字节跳动多篇论文入选 CVPR 2021,精选干货都在这里了
- string. How to choose h and string and CString
- Use of mongodb in node
- 7-12 inventory code base
猜你喜欢
我走过最迷的路,是字节跳动程序员的脑回路
The QT program compiled on CentOS lacks a MySQL driven solution
The 116 students spent three days reproducing the ByteDance internal real technology project
ByteDance 2022 school recruitment R & D advance approval publicity meeting, students' top 10 issues
Activit fragmented deadly pit
Fdog series (4): use the QT framework to imitate QQ to realize the login interface, interface chapter.
字节跳动春招攻略:学长学姐笔经面经,还有出题人「锦囊」
README. txt
Shell_ 07_ Functions and regular expressions
High performance mysql (Third Edition) notes
随机推荐
Fdog series (V): use QT to imitate QQ to realize login interface to main interface, function chapter.
~85 transition
How to configure hosts when setting up Eureka
yum install xxx报错
Only learning C can live up to expectations top5 S1E8 | S1E9: characters and strings & arithmetic operators
~79 Movie card exercise
[graduation project] QT from introduction to practice: realize imitation of QQ communication, which is also the last blog post in school.
姚班智班齐上阵,竞赛高手聚一堂,这是什么神仙编程大赛?
汇编课后作业
ByteDance technical Interviewer: what kind of candidate do I want to pick most
~74 JD top navigation bar exercise
亮相Google I/O,字节跳动是这样应用Flutter的
Description of project structure configuration of idea
koa中间件
~75 background
Solr new core
js垃圾回收机制和内存泄漏
服务器端渲染(SSR)和客户端渲染(CSR)的区别
Full record of ByteDance technology newcomer training: a guide to the new growth of school recruitment
Shell_ 02_ Text three swordsman