0
点赞
收藏
分享

微信扫一扫

JavaScript原型链

女侠展昭 2021-09-28 阅读 62

js原型链

原型链是JS面向对象的基础非常重要

函数在构造对象时会为对象划分内存并将自己的值this.xxx的值复制到该对象的内存中,为了节约内存则使用了一个prototype的公共内存空间,方便该构造函数的所有对象共用,在对象查找属性时如果找不到则会调用__proto__指针来找到构造函数的prototype属性

你会发现函数本身也可以具有属性,所以函数是一个特殊的对象,因此也有js一切皆对象的说法。

面向对象的编程实现(OOP,Object Oriented Programming)

私有属性就是构造函数中普通的this.xxx属性
公有属性即prototype中的属性
静态属性是构造函数的属性

继承

// a继承b
function __() { this. constructor = A};
__.prototype = B.prototype;
A.prototype = new __();  // 此时A.prototype.__proto__ == __.prototype == B.prototype
// 1. new A()时会调用A.prototype.constructor,
// 2.当对象a查找属性时会先找a.__proto__ == A.prototype,A.prototype没有则找A.prototype.__proto__ == B.prototype

这就相当于只改变了A.prototype.__proto__的指向,即改变了公共空间的指向,继承了B的公有属性,同时A添加公共属性时不会影响到父级。

举报

相关推荐

0 条评论