javascripty原型链的理解 修改this指向

    xiaoxiao2022-07-05  168

    “”原型链“”有两条线,理解原型链先理解各对象的顶层,“第一层”:也是最大的BOS“function”,“”第二层“”:是js里面所有的基础类型“object,string,number,bolean,function…”,“”第三层“”:是基础类型new出来的实例,就是var 定义的就是实例,通过prototype属性可以查找,有返回turn 没有返回flase,这是一条线,第二条是从“Object”为老大的开始,下面有基础类型;在通过基础类型new出来的实例找到他们的原型,可以相互继承但是不会存在在他们里面,比如arr[3,3,4,4,5,5],它上面的一条线是Array,Array构造出来的实例,arr可以继承,但是arr的元素不会增加,同样Array往上面找的Object构造出来的属性,arr同样可以继承 例如: var arr=[“name”,“age”,“sex”]; Array.prototype.two=“小伙子”; var d=arr.two; console.log(d); var obj={ a:“哈哈”, b:“嘿嘿”, c:function(){ console.log(“我是孙悟空”); } } Object.prototype.text=function(){ console.log(“我是猪八戒”); } obj.text(); arr.text(); //最大的原型就是Object,所有上面的arr可以继承Object的方法,虽然可以继承,但是不会再加在它元素里面 找到构造它的原型方法:construstor,通过实例对象去找到它的构造对象 –proto–,通过实例,属性去找到它原型里面有哪些可以访问,查找 “this”修改指向,有三个方法,call apply bind var array=[34,56,9,89,7,56,234]; var a=Math.max.apply(array,array); var b=Math.max.call(null,34,4,78,56); console.log(a,b) var array1=[34,56,9,89,7,56,234]; var c=Math.max.bind(array1)(34,56,9,89,7,56,234); console.log©; call的用法区别参数可以直接填 apply的用法除了填指向的参数,后面的参数要用数组的方式参进去 bind的用法就是修改后不会立即执行,会先返回一个函数,通过调用会出来你要的结果, 为什么要学习this的指向问题:就是以后共同合作需要用别人的一些属性,方法,直接不需要再创建,直接修改它的指向就是拉出它的东西

    最新回复(0)