美文网首页饥人谷技术博客
关于this的一点心得

关于this的一点心得

作者: _咸鱼君 | 来源:发表于2015-11-25 23:41 被阅读73次

最初学习js时,因为和面向对象语言中的语法混淆,一直认为this指向的是当前对象,在实际应用中吃了不少亏,今天根据之前阅读过的书和文章来讲解一下。

独立函数的调用:


function func(){

console.log(this);

}

func();//Window

这种模式是我们最常见的模式,在全局作用域中声明一个函数,并调用它,此时函数中的this指向全局对象。

作为对象方法调用:


function say(){

console.log(this);

}

var obj = {

name:"hehe",

say:say

};

obj.say();//Object {name: "hehe"}

当函数作为一个对象的方法调用时,函数中的this绑定到了这个对象。

使用call或apply来调用函数


function func(){

console.log(this);

}

var obj = {

name:"hehe"

};

func.call(obj);//Object {name: "hehe"}

func.apply(obj);//Object {name: "hehe"}

当使用call()或apply()函数进行函数调用时,传入参数对象的将被设置为函数体内this的值,这两个函数都是设置调用函数体内的this值的,且第一个参数都为this,区别是第二个参数apply()是一个参数组arguments,参数都是以数组[]的形式传入,而call(),传递给他的参数必须一个一个写出来。例如


function func(a,b){

console.log(a+b);

}

var obj = {

name:"hehe"

};

func.call(obj,1,2);//3

func.apply(obj,[1,2]);//3

new来调用函数


function Dog(name){

this.name = name;

console.log(this.name);

}

var dog = new Dog('hehe');//hehe

当使用new来调用一个函数时,会创建一个新的对象,然后绑定到Dog()调用中的this。

以上是我对this的一点粗略认识,还有许多细枝末节需要注意,这是我第一篇技术博客,之后在建立更全面的this知识体系后会调整风格完善关于this的研究。

相关文章

  • 关于this的一点心得

    最初学习js时,因为和面向对象语言中的语法混淆,一直认为this指向的是当前对象,在实际应用中吃了不少亏,今天根据...

  • 对于007不出局的一点心得

    对于007的一点心得,关于人生、关于目标、关于行动 2020年2月21日 刚完成注册,规则还没仔细研究,就到交作业...

  • 开篇之穹顶之下

    非典型性工科青年,感性加理性的综合体,写一点东西,关于时事热点,关于音乐,关于电影,关于个人心得。不求拯救苍生大众...

  • ArcFace Notes

    Framework: Pytorch 0.3.0 关于pytorch 反传计算图一点小心得: 计算图记录了vari...

  • 如果人生是不停的打怪升级,那么装修和育儿是两个终极大boss!

    Eva 周记 No.14 2019-02.18--2019-02.24 一、自我成长: 关于装修,分享一点心得。 ...

  • 关于“学习”的一点心得

    最近每天听“得到”,让我最走心的一句话就是罗辑思维的广告语:“和你一起,终身学习!”走心之后,我就产生了三个疑问:...

  • 关于写作的一点心得

    一篇文章,能否有个好的开头,则对于这篇文章在网上的点击量有着至关重要的影响。那什么样的开头才算是好的呢?这...

  • 关于教育的一点心得

    关于教育的一点心得 教育真的是一个需要细心研究的学问。真的是养孩才有发言权。 今天晚饭后散步,突发奇想...

  • 关于写作的一点心得

    最近陆续写了一些文章,也鼓起勇气发表在简书和公众号上了,这算是初熟的果子么?如果是,那真的感谢上帝。 小约翰有一篇...

  • 关于写作的一点心得

    从去年3月到现在,加入007之后,每周写一篇文章。 最初也是因为笑来老师说的,把自己的同一段时间重复销售很多很多次...

网友评论

    本文标题:关于this的一点心得

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