当前位置: 首页 > Web前端 > HTML5

说说你对此的理解?能谈谈您对此的理解吗?

时间:2023-04-05 13:09:56 HTML5

谈谈你对此的理解?这个方向不是在写的时候决定的,而是在执行的时候决定的。同时,其不同的方向在于遵循一定的规则。首先,默认情况下,this指向全局对象,比如浏览器中的window。name="Bale";functionsayName(){console.log(this.name);};sayName();//"Bale"其次,如果调用函数的地方有context对象,那么这个函数就是调用隐式绑定的。functionf(){console.log(this.name);}varobj={name:"Messi",f:f};obj.f();//调用的location刚好是对象obj拥有的,所以结果又是梅西,显示改变了this的方向。常用方法有调用、应用和绑定。以bind为例:functionf(){console.log(this.name);}varobj={name:"Messi",};varobj1={name:"贝尔"};f.bind(obj)();//梅西,由于bind将obj绑定到f函数后返回一个新函数,所以需要加括号才能执行,这就是bind和apply和call的区别最后也是优先级最高的bindingnewbinding。使用new调用构造函数将创建一个新对象。在创建这个新对象的过程中,这个新对象会自动绑定到Person对象的this上,所以this自然会指向这个新对象。函数Person(name){this.name=name;console.log(name);}varperson1=newPerson('Messi');//梅西绑定优先级:new绑定>显式绑定>隐式绑定>默认绑定能不能谈谈你对这个的理解?执行时间。同时,this的不同方向在于遵循一定的规则。首先,默认this指的是全局的对象,比如which指的是浏览器中的window.name="Bale";functionsayName(){console.log(this.name);};sayName();//"Bale"其次,如果调用函数的位置有context对象,那么这个函数就是隐式绑定的。functionf(){console.log(this.name);}varobj={name:"梅西",f:f};obj.f();//被调用的位置恰好被对象obj接收到,因此结果是Messi再次,这个显示改变了这一点,常用的方法有call、apply、bind,以bind为例:functionf(){console.log(this.name);}varobj={name:"Messi",};varobj1={name:"Bale"};f.bind(obj)();//Messi,因为bind将obj绑定到ffunction返回一个新的函数,所以需要加括号才能执行。这就是bind、apply和call的区别最后是优先级最高的bindingnew。使用new关键字调用构造函数,它将创建一个新对象。在创建新对象的过程中,新对象会自动绑定Person对象中的this,然后this自然指向新对象。函数Person(name){this.name=name;安慰。日志(姓名);}varperson1=newPerson('梅西');//MessiBinding优先级:newBinding>explicitbinding>implicitbinding>defaultbinding