扫码关注公众号

JavaScript语言之原型、原型链和继承
11-28
27观看
01

什么是原型、原型链?原型和原型链的作用。

原型:JS声明构造函数(用来实例化对象的函数)时,会在内存中创建一个对应的对象,这个对象就是原函数的原型。构造函数默认有一个prototype属性,prototype的值指向函数的原型。同时原型中也有一个constructor属性,constructor的值指向函数对象。通过构造函数实例化出来的对象,并不具有prototype属性,其默认有一个__proto__属性,__proto__的值指向构造函数的原型。在原型对象上添加或修改的属性,在所有实例化出的对象上都可共享。原型的作用:1.数据共享节约内存内存空间2.实现继承原型链:当在实例化的对象中访问一个属性时,首先会在该对象内部(自身属性)寻找,如找不到,则会向其__proto__指向的原型中寻找,如仍找不到,则继续向原型中__proto__指向的上级原型中寻找,直至找到或Object.prototype.__proto__为止(值为null),这种链状过程即为原型链。原型链的作用:查找对象的属性(方法)

来自:JavaScript语言-原型、原型链和继承
02

什么是原型污染?原型污染的解决方案有哪些?

原型污染是指:攻击者通过某种手段修改JavaScript对象的原型。原型污染的解决方案有:1.使用Object.create(null)方法创建一个原型为null的新对象,这样无论对原型做怎样的扩展都不会生效。2.使用Object.freeze(obj)冻结指定对象,使之不能被修改属性,成为不可扩展对象。3.建立JSONschema,在解析用户输入内容时,通过JSONschema过滤敏感键名。4.规避不安全的递归性合并。这一点类似lodash修复手段,完善了合并操作的安全性,对敏感键名跳过处理。

来自:JavaScript语言-原型、原型链和继承
03

什么是原型链继承?

原型链继承就是让对象实例通过原型链的方式串联起来,当访问目标对象的某一属性时,能顺着原型链进行查找,从而达到类似继承的效果。

来自:JavaScript语言-原型、原型链和继承
04

实现继承的方法?

1.利用call借用构造函数继承优点:实现了继承属性,但值都不相同缺点:无法继承父级类别中原型上的方法2.prototype实现继承利用prototype,将Student的prototype指向Person来达到继承效果,优点:继承了父级原型上的方法缺点:实例化多个Student都必须共用相同的name和age3.组合继承组合继承其实就是结合了上述的两种方法来实现继承,拥有两种方法的优点4.拷贝继承类似于复制,把一个对象中的属性和方法直接复制到另一个对象中5.直接继承prototype优点:效率比较高缺点:因为相当于是个传址过程所以修改Student的属性Person的也会被更改6.利用空对象作中介实现继承用这种方式修改Student的prototype不会影响到Person的prototype

来自:JavaScript语言-原型、原型链和继承
课程
专栏
【校招VIP】原型和原型链
csdn
原型
原型链
【校招VIP】什么是原型、原型链?原型和原型链的作用(有图方便理解)
csdn
原型
原型链
【校招VIP】JavaScript 原型链和继承面试题
csdn
原型链
继承
js语言和框架-JavaScript语言-原型、原型链和继承
3专栏
1课程
4 试题