zoukankan      html  css  js  c++  java
  • js原型链

     

     

    __proto__和prototype的区别:

    prototype是函数才有的属性,而__proto__是每个对象都有的属性

    也就是说 obj.__proto__===function.prototype

    像这样

    function Fn() {
    }
    var fn = new Fn()
    Fn.prototype===fn.__proto__ //true
     
     
     

     解释下上面代码的含义,当我定义一个obj对象(对象没有prototype,函数才有prototype)obj.toString的时候,js引擎会做下面的事情

    看看obj对象本身有没有toString()属性,如果没有,它就会去她的_proto_里面找,  如果__proto里面没有。继续往后面的proto去找,一直找到null为止,如果永远都没找到tostring()这个属性,最后返回的就是undefind.这个搜索的过程,是由着proto组成的链子一直走下去的,这个过程我们就称之为原型链 

    所以说在反爬的过程中,如果定义一个很长的原型链,我们在原型链当中去插入一个原生函数的同名函数,以此达到以假乱真的目的

     

     

    原型链 继承
     

    function Cd(){
    this.name="cd"

    }
    undefined
    function Pa(){

    this.name="Pa"
    this.sex='boy'

    }
    undefined
    Cd.prototype=new Pa()
    Pa {name: "Pa", sex: "boy"}
    var cd =new Cd()
    undefined
    cd
    Cd {name: "cd"}name: "cd"__proto__: Paname: "Pa"sex: "boy"__proto__: Object

     
     
     
     
    instantof

    打比方说

    extends继承

    yange 

  • 相关阅读:
    linux 分区格式查看
    MDL原理理解
    linux oracle配置开机启动
    oracle em手动配置
    java字符编码详解
    linux oracle 配置监听器
    mysql 生成时间序列数据
    R实用小技巧
    python将文件夹下的所有csv文件存入mysql和oracle数据库
    遗传算法求解最优化问题
  • 原文地址:https://www.cnblogs.com/wuxianyu/p/14499774.html
Copyright © 2011-2022 走看看