当前位置:网站首页>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 .
边栏推荐
- Design of DS18B20 digital thermometer system
- ~79 Movie card exercise
- ~76 sprite map
- MySQL date function
- Assembly language addressing mode
- 谢邀,人在工区,刚交代码,在下字节跳动实习生
- 汇编语言段定义
- Fdog series (VI): use QT to communicate between the client and the client through the server (less information, recommended Collection)
- 搭建flutter环境入坑集合
- js垃圾回收机制和内存泄漏
猜你喜欢
随机推荐
[graduation project] QT from introduction to practice: realize imitation of QQ communication, which is also the last blog post in school.
Typescript basic operations
字节跳动开源GAN模型压缩框架,算力最高节省97.8%丨ICCV 2021
Activiti目录(一)重点介绍
程序员定位解决问题方法论
Fdog series (V): use QT to imitate QQ to realize login interface to main interface, function chapter.
How to generate six digit verification code
~86m rabbit practice
登陆验证koa-passport中间件的简单使用
~71 abbreviation attribute of font
~75 background
@RequestMapping、@GetMapping
~73 other text styles
Fdog series (III): use Tencent cloud SMS interface to send SMS, write database, deploy to server, web finale.
Solr word segmentation analysis
Compile homework after class
Activit零零碎碎要人命的坑
Koa Middleware
数据传送指令
DS18B20數字溫度計系統設計