javascript函数小知识
javascript中的函数跟其他语言的函数有很大的不同,让人觉得怪怪的。尤其是有无括号、有无new,结果大不同,this指向也有莫测的变化。
<script type="text/javascript"> //关于函数小知识,wallimn function func(){ this.id='func'; } var a = func;//把func对应的函数赋值给a,此函数并没有被执行。此后,a()相当于func(),也就是说a、func指向相同的函数体。 console.log(a)//输出为函数定义 console.log(a.id);//输出为undefined console.log(window.id);//输出为undefined,因为只进行了函数赋值操作,函数没有执行 var b = func();//把func函数的执行结果赋值给b,func函数没有返回值,那么b为undefined。此过程中func体中的this指window。根据window.id的输出可知 console.log(b)//输出为undefined //console.log(b.id)//执行会出错。 console.log(window.id);//输出为func,函数普通调用(不用new)时,内部的this指向window var c = new func();//相当于把func当作一个构造函数执行,返回一个对象赋值给c。此时是可以调用c.id。函数体中的this指向函数执行后形成的上下文 console.log(c);//输出为创建的对象,this指针指向函数执行上下文。 console.log(c.id);//出为func var d = new func(); d.id="new func"; console.log(c.id);//输出为func console.log(d.id);//输出为new func。每次new,得到独立的上下文。 </script>
相关推荐
nmgxzm00 2020-11-10
ifconfig 2020-10-14
hhanbj 2020-11-17
zfszhangyuan 2020-11-16
古叶峰 2020-11-16
一个智障 2020-11-15
jipengx 2020-11-12
81427005 2020-11-11
xixixi 2020-11-11
游走的豚鼠君 2020-11-10
苗疆三刀的随手记 2020-11-10
Web卓不凡 2020-11-03
小飞侠V 2020-11-02
帕尼尼 2020-10-30
爱读书的旅行者 2020-10-26
帕尼尼 2020-10-23
杏仁技术站 2020-10-23
淼寒儿 2020-10-22