zoukankan      html  css  js  c++  java
  • javascript 原型链污染

    原理
    ①javascript中构造函数就相当于类,并且可以将其实例化

    ②javascript的每一个函数都有一个prototype属性,用来指向该构造函数的原型
    同样的javascript的每一个实例对象也有一个__proto__方法指向该实例对象的原型,并且例如:
    function Cat(){
        This.color='orange';
    }
    cat =new Cat();
    console.log(Cat.prototype===cat.__proto__)
    结果
    True
    可见实例的原型和构造函数的原型相等
    并且每一个函数也有一个constructor属性指向其构造函数,也就是
    Cat.prototype.constructor===Cat

    ③在javascript中Object是位于原型链的顶端,Object.prototype===null

    ④javascript的继承是基于原型链的,在原型链上的任何位置设置属性都能被其访问到,原型的作用也在此,
    他可以包含所有实例共享的属性和方法,例如:
    function Cat(){
        this.color='orange';
    }
    Cat.prototype.getcolor=function(){
        console.log(this.color)
    }
    cat =new Cat();
    cat.getcolor();     //orange

    在javascript中访问一个对象的属性可以用a.b.c或者a["b"]["c"]的方式来访问,由于对象是无序的,
    当使用第二个方式访问对象时,只能使用指明下标去访问,因此我们可以通过a["__proto__"]方式访问
    其原型对象,而如果修改了一个对象的原型,那么将影响所有和这个对象来自同一类、父祖类的对象,这就是原型链污染。

    Demo

    案例以后会补充

  • 相关阅读:
    Codeforces Round #610 (Div. 2)C(贪心,思维)
    Educational Codeforces Round 80 (Rated for Div. 2)C(DP)
    BZOJ2190 仪仗队
    BZOJ3613 南园满地堆轻絮
    BZOJ1084 最大子矩阵
    BZOJ1036 树的统计Count
    BZOJ1452 Count
    BZOJ2242 计算器
    BZOJ2705 Longge的问题
    BZOJ1509 逃学的小孩
  • 原文地址:https://www.cnblogs.com/cimuhuashuimu/p/11544425.html
Copyright © 2011-2022 走看看