草庐IT

Java——this关键字

全部标签

javascript - IE8 Array.prototype.slice : 'this' is not a JavaScript object

我只在IE8中收到此错误消息,我不知道如何转换现有函数以兼容IE8。_initEvents:function(){varself=this;Array.prototype.slice.call(this.menuItems).forEach(function(el,i){vartrigger=el.querySelector('a');if(self.touch){trigger.addEventListener('touchstart',function(ev){self._openMenu(this,ev);});}else{trigger.addEventListener('cl

javascript - 试图找出一些js代码中的 'this'

functionbuttonClicked(){vartext=(this===window)?'window':this.id;console.log(text);}varbutton1=document.getElementById('btn1');varbutton2=document.getElementById('btn2');button1.onclick=buttonClicked;button2.onclick=function(){buttonClicked();};问题:点击button1,显示:btn1,点击button2和button3,显示:window,为什

javascript - 为什么 "this"的值会改变。?

我正在学习javascript,我遇到了一个疑问。为什么“this”的值在第一个示例中未定义,但在第二个示例中打印正确。示例1:varmyNamespace={myObject:{sayHello:function(){console.log("nameis"+this.myName);},myName:"john"}};varhello=myNamespace.myObject.sayHello;hello();//"nameisundefined"示例2:varmyNamespace={myObject:{sayHello:function(){console.log("Hi!My

javascript - 调用 $(this) 时,jQuery 会重新查询 DOM 吗?

在下面的代码中,当$(this)被调用时,jQuery是否重新查询DOM,就好像选择器已传递给它一样(使用对象的某些属性作为选择器),或者jQuery是否保留先前返回的对象?$('.someButton').on('click',function(){$(this).remove();//Isthisanotherlookup,orjustawrapperforthepreviouslyreturnedobject?}); 最佳答案 它不会重新查询DOM,this已经是一个元素。jQuery只是将上下文设置为元素,调整长度,然后返回

javascript - JQuery $(this) 在函数参数中不起作用

以下代码无效:$(".countdown").circularCountdown({startDate:$(this).attr('data-start'),endDate:$(this).attr('data-end'),timeZone:$(this).attr("timezone")});下面那个工作正常,$(".countdown").circularCountdown({startDate:$(".countdown").attr('data-start'),endDate:$(".countdown").attr('data-end'),timeZone:$(".count

javascript - AngularJS — 将范围(不带 $)注入(inject) Controller

在MaterialDesignmdDialogdocumentation,我注意到他们已经将范围(没有前缀美元符号)传递给底部附近的DialogController。(function(angular,undefined){"usestrict";angular.module('demoApp',['ngMaterial']).controller('AppCtrl',AppController);functionAppController($scope,$mdDialog){varalert;$scope.showAlert=showAlert;$scope.showDialog=s

javascript - "this"上下文输出无法理解

我很难理解下面的代码。functionfoo(){console.log(this.a);}varobj={a:2,foo:foo};vara=4;obj.foo();setTimeout(obj.foo,100);setTimeout(obj.foo.bind(obj),100);它的输出为2、4、2,我无法理解。 最佳答案 第一种情况,obj.foo();foo中的this将指向obj,因为您已将该函数分配为该特定对象的属性。第二种情况,setTimeout(obj.foo,100);在setTimeout中,传递的函数将在窗口

javascript - 闭包(let 关键字)- Javascript

这个问题在这里已经有了答案:Explanationof`let`andblockscopingwithforloops(5个答案)关闭5年前。functionfirst(){varitems=document.getElementsByTagName("li");for(varx=0;x列表中有4个元素。3个函数的输出:第一:4444第二个:0123第三个:0123我无法理解第三个函数的输出。在第二个函数中,每次调用IIFE都会创建一个新的函数对象,从而创建一个新的val变量。但是在第三个函数中,变量x只有一个副本,那么输出如何:0123如有错误请指正

javascript - 防止 this.state 与 setState 一起使用

Thereference状态:setState()doesnotalwaysimmediatelyupdatethecomponent.Itmaybatchordefertheupdateuntillater.Thismakesreadingthis.staterightaftercallingsetState()apotentialpitfall.Instead,usecomponentDidUpdateorasetStatecallback(setState(updater,callback)),eitherofwhichareguaranteedtofireaftertheupd

JavaScript图表——动态添加数据点

作为AJAX接收数据的结果,我正在尝试将数据点动态添加到jqplot,但我看不到实现此目的的方法。这不可能吗?如果不是,还有哪些其他软件包可以完成相同的基本图形并允许动态数据? 最佳答案 您可能想查看下面的示例,了解如何在Flot中处理此问题。.Flot是一个基于jQuery的开源绘图库,比如jqplot.这两个库非常相似。这是使用AJAX获取和绘制数据在代码中的样子:functionfetchData(){$.ajax({url:"json_fetch_new_data.php",method:"GET",dataType:"js