?this&函数自身的引用
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script> var obj2 = { name:"ssss" } console.log(window.obj2);//Object {name: "sjr"} </script> </head> <body> <textarea id="output" cols="80" rows="10"></textarea> <script> (function(){ var obj = {//局部变量,只能在function中被引用,并不会成为谁的属性 name:"sjr" } console.log(this);//window(this指的是,调用函数的那个对象) console.log(this.obj);//undefined })() </script> </body> </html>
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions
在函数执行时,this
关键字并不会指向正在运行的函数本身,而是指向调用该函数的对象.所以,如果你想在函数内部获取函数自身的引用,只能使用函数名或者使用arguments.callee属性(严格模式下不可用),如果该函数是一个匿名函数,则你只能使用后者.
arguments.callee
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/callee
描述
callee
是 arguments
对象的属性。在该函数的函数体内,它可以指向当前正在执行的函数。当函数是匿名函数时,这是很有用的, 比如没有名字的函数表达式 (也被叫做"匿名函数")。