美文网首页
js this简单理解

js this简单理解

作者: 小银 | 来源:发表于2018-07-31 10:53 被阅读0次

先看一段简单代码

var cat={
name:"cat",
language:"miao",
shout:function(){
  console.log(this.language);
}
}
var language="hello word"
cat.shout()//1方法调用
function shout(){
 console.log(this.language);
}
shout()//2函数式调用

cat.shout.apply(cat) //3apply调用
cat.shout.apply(window) //4apply调用
window.shout.apply(window)//5
window.shout.apply(cat)//6

从结果上看1,3,6输出是一样的,2,4,5是一样的
从调用角度理解,其实方法调用和函数式调用都是apply调用的语法糖,转化后就能很好的理解对应的this是什么
new 构造函数调用有点不同 ,它本质也是一种函数调用语法糖。

var Cat=function(name){
  this.name='name
}
var c1=new Cat("miao");
console.log(c1)
//等价于
function fNew(){
var fun=Array.prototype.shift.call(arguments)
var c={}
c.__proto__=fun.prototype
fun.apply(c,arguments)
return c;
}
var c2=fNew(Cat,"miao")
console.log(c2)

可以看到c1和c2结果是一直的,其实也是调用了apply方法改变了this指向

相关文章

  • js this简单理解

    先看一段简单代码 从结果上看1,3,6输出是一样的,2,4,5是一样的从调用角度理解,其实方法调用和函数式调用都是...

  • 初识three.js

    What is Three.js 什么是threejs,很简单,你将它理解成three + js就可以了。thre...

  • 初识three.js

    What is Three.js 什么是threejs,很简单,你将它理解成three + js就可以了。thre...

  • vue源码学习--响应式原理

    使用Vue.js已经有一段时间了,为了更好的理解它的原理,最近在理解Vue.js的源码,Vue.js上手比较简单。...

  • js:Promise的简单理解

    层面上的理解:Promise是一个类,有3个状态分别是:等待态(默认) 成功态 失败态 打个比方比如承诺要给...

  • js原型链--js面向对象编程

    简单粗暴地理解js原型链--js面向对象编程 原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢...

  • vue.js中对于this.$nextTick()的理解

    仅仅是个人的理解,如有出入,欢迎指正!!!! 1.简单的理解,我认为vue.js中this.$nextTick()...

  • 说说JS原型链

    JS的原型链的分析网上有大把,比如这种: 不过有必要把简单的东西复杂化吗? 其实理解JS原型链只需要理解一个准则,...

  • 详解Js中的数据类型(一)

    整个Js可以简单理解为二个部分,数据部分,操作运算部分。 Js中数据类型分为:原始的数据类型 (由简单数据类型组成...

  • js原型链的简单理解

    1)在面试前端许多考题都会问你对原型链的理解或者说请写出构造函数的原型图 重点prototype以及constru...

网友评论

      本文标题:js this简单理解

      本文链接:https://www.haomeiwen.com/subject/mescvftx.html