跳到主要内容
分享您的体验:以2024年开发商调查为例
修复了打字错误。
来源 链接
片麻岩
  • 11.8千
  • 7
  • 51
  • 72
  • 全球的全球的
  • 全球的
  • 全球的
来源 链接
藏族
  • 46.5公里
  • 22
  • 196
  • 228

在这里是一个很好的来源在里面JavaScript脚本.

以下是总结:

  • 把这个放在一起

在浏览器中,在全局范围内,窗口对象

<script type=“text/javascript”>console.log(这个===窗口);//真的var foo=“bar”;console.log(this.foo);//“酒吧”console.log(window.foo);//“酒吧”</script>

节点使用repl,是顶级命名空间。您可以将其称为全球的.

>这个{ArrayBuffer:[函数:ArrayBuffer],Int8Array:{[函数:Int8Array]BYTES_PER_ELEMENT:1},Uint8Array:{[函数:Uint8Array]BYTES_PER_ELEMENT:1},。。。>全局===此真的

节点从脚本执行,在全局范围开始时是一个空对象。它与全球的

\\测试.jsconsole.log(this);\\{}console.log(这===全局);\\法斯莱
  • 函数this

DOM事件处理程序或这个Arg在节点和浏览器中使用在未使用调用的函数中新的引用全局范围…

<script type=“text/javascript”>foo=“bar”;函数testThis(){this.foo=“foo”;}console.log(this.foo)//日志“栏”testThis();console.log(this.foo)//日志“foo”</script>

如果您使用使用严格;,在这种情况下未定义

<script type=“text/javascript”>foo=“bar”;函数testThis(){“使用严格”;this.foo=“foo”;}console.log(this.foo)//日志“栏”testThis()//Uncaught TypeError:无法设置未定义的属性“foo”</script>

如果使用调用函数新的这个将是一个新的上下文,它不会引用全局.

<script type=“text/javascript”>foo=“bar”;函数testThis(){this.foo=“foo”;}console.log(this.foo)//日志“栏”新测试This();console.log(this.foo)//日志“栏”console.log(新testThis().foo)//日志“foo”</script>
  • 这个原型

您创建的函数将成为函数对象。他们会自动得到一份特别的原型属性,这是您可以为其赋值的对象。当您通过使用调用函数来创建实例时新的您可以访问分配给原型属性。您可以使用以下命令访问这些值.

函数Thing(){console.log(this.foo);}Thing.prototype.foo=“bar”;var thing=新事物()//日志“栏”console.log(thing.foo)//日志“栏”

分配通常是错误的阵列物体原型。如果您希望每个实例都有自己的数组,请在函数中创建它们,而不是在原型中创建。

函数Thing(){this.things=[];}var thing1=新事物();var thing2=新Thing();thing1.things.push(“foo”);console.log(thing1.things)//日志[“foo”]console.log(事物2.things)//日志[]
  • 反对这个

你可以使用在对象的任何函数中引用该对象的其他属性。这与使用创建的实例不同新的.

变量obj={foo:“bar”,logFoo:函数(){console.log(this.foo);}};obj.logFoo()//日志“栏”
  • DOM事件this

在HTML DOM事件处理程序中,始终是对事件附加到的DOM元素的引用

函数Listener(){document.getElementById(“foo”).addEventListener(“点击”,this.handleClick);}Listener.prototype.handleClick=函数(事件){console.log(this)//日志“<div id=”foo“></div>”}var listener=新监听器();document.getElementById(“foo”).click();

除非你绑定上下文

函数Listener(){document.getElementById(“foo”).addEventListener(“点击”,this.handleClick.bind(this));}Listener.prototype.handleClick=函数(事件){console.log(this)//日志侦听器{handleClick:function}}var listener=新监听器();document.getElementById(“foo”).click();
  • HTML此

在HTML属性中可以放置JavaScript,是对元素的引用。

<div id=“foo”onclick=“console.log(this);”></div><script type=“text/javascript”>document.getElementById(“foo”).click()//日志<div id=“foo”。。。</script>
  • 评估这个

你可以使用评估访问.

函数Thing(){}Thing.prototype.foo=“bar”;Thing.prototype.logFoo=函数(){eval(“console.log(this.foo)”)//日志“栏”}var thing=新事物();thing.logFoo();
  • 用这个

你可以使用具有添加读取和写入当前作用域上的值没有提及明确地。

函数Thing(){}Thing.prototype.foo=“bar”;Thing.prototype.logFoo=函数(){用(这个){console.log(foo);foo=“foo”;}}var thing=新事物();thing.logFoo();//日志“栏”console.log(thing.foo);//日志“foo”
  • j查询此

jQuery在许多地方都有引用DOM元素。

<div class=“foo bar1”><div class=“foo bar2”></div><script type=“text/javascript”>$(“.foo”).each(函数(){console.log(this)//logs<div class=“foo。。。});$(“.foo”).on(“单击”,函数(){console.log(this)//logs<div class=“foo。。。});$(“.foo”).each(函数(){this.click();});</script>