草庐IT

this_call

全部标签

javascript - 为什么要创建一个值为 this 的变量

我在JavaScript中看到过很多这种情况,我确实记得找出原因,但我不记得答案了。我猜这与范围和在“类”外部调用的函数有关,但为什么要这样做(最好概述一个示例):functionmyClass(){varself=this;//...this.myArray=[];this.myFunc=function(){alert(self.myArray.length);};} 最佳答案 为了锁定变量作为closure的一部分.例如:MyClass.prototype.doStuff=function(){this.foundItems=

javascript - 为什么 `this` 在 ES6 箭头函数中不起作用?

这个问题在这里已经有了答案:ArrowFunctionsandThis[duplicate](5个答案)关闭7年前。这是我的代码:'usestrict';letobj={username:'HansGruber',hello:()=>'hello,'+this.username};console.log(obj.hello());但输出是:hello,undefined。我希望输出为:你好,HansGruber。我想我还没有理解箭头函数中的this。谁能给我一个明确的解释?

javascript - 除了执行 Object.prototype.hasOwnProperty.call(obj, key) 是否有 ES6+ 替代方案?

检查对象是否具有特定键的最可靠方法是:Object.prototype.hasOwnProperty.call(obj,key)这提供了一定的保证:如果key是obj的direct属性,它只会评估为true,即使obj没有通常的Object作为其原型(prototype)(例如,如果它是用constobj=Object.create创建的)(null)).但这是一口。在ES6或更高版本中是否有任何新的语法/方法(包括polyfillable或Babel可编译的“建议”)提供相同的保证,但以更好、更易读的方式? 最佳答案 我不知道这有

JavaScript 装饰器模式。错误 : Maximum call stack size exceeded

这是装饰器模式的一个工作示例:classDummy{run(){console.log('run');}}functionget(){letinstance=newDummy();instance.run=((func)=>{returnfunction(){func();console.log('decoratorrun');}})(instance.run);returninstance;}letobj=get();obj.run();但是,如果我们将get函数更改为:functionget(){letinstance=newDummy();instance.run=functio

javascript - 你如何引用 Array.prototype.slice.call()?

我正在编写一个脚本,其中我需要在许多不同的地方克隆数组。因此,我想执行以下操作来模拟克隆功能:varclone=[].slice.call;vararr1=[1,2,3,4,5,6,7,8,9,10];vararr2=clone(arr1,0);不幸的是,上面的代码导致:TypeError:objectisnotafunction。我意识到有很多功能可以进行深度克隆和浅拷贝,但我只想使用内置方法。有趣的是,以下确实有效:varclone=[].slice;vararr1=[1,2,3,4,5,6,7,8,9,10];vararr2=clone.call(arr1,0);有谁知道为什么第

javascript - "Object.call"是什么意思?

functionbb_graphics_GraphicsContext(){Object.call(this);this.bbdevice=null;this.bbmatrixSp=0;this.bbix=1.000000;this.bbiy=0;this.bbjx=0;this.bbjy=1.000000;this.bbtx=0;this.bbty=0;this.bbtformed=0;this.bbmatDirty=0;this.bbcolor_r=0;this.bbcolor_g=0;this.bbcolor_b=0;this.bbalpha=0;this.bbblend=0;t

javascript - 在匿名内部使用 'this',IDE : potentially invalid usage

就最佳实践而言,下一个功能(实际有效)是否不好?IDE警告我'Potentiallyinvalidusageof'this'.ChecksforJavascript'this'tobeinthesameclosureoroutercontent.$(document).on('change','#select-all',function(){if(this.checked){$(this).closest('table').find('input[name="row-id"]').each(function(){this.checked=true;//Here})}else{$(thi

javascript - jQuery this.remove() -vs.- $ ('#id' .remove() 在 Internet Explorer (IE 9+)

为什么this.remove()在IE9+中不起作用?$('#nextButton1').on('click',function(){this.remove();//worksinallbrowsersbutIE9+});$('#nextButton2').on('click',function(){$('#nextButton2').remove();//worksinallbrowsers});JSFiddleliveversion 最佳答案 那是因为您正在使用并非所有浏览器都支持的ChildNode.remove()方法。th

javascript - AngularJS - 最佳实践 : model properties on view or function calls?

很长一段时间以来,我一直在想这个问题:在使用AngularJS时,我应该直接在View上使用模型对象属性,还是可以使用函数来获取该属性值?我一直在用Angular做一些小的家庭项目,并且(特别是使用只读指令或Controller)我倾向于创建范围函数来访问和显示范围对象及其在View上的属性值,但是性能-明智的,这是一个好方法吗?这种方式似乎更容易维护View代码,因为如果由于某种原因对象被更改(由于服务器实现或任何其他特定原因),我只需要更改指令的JS代码,而不是HTML.这是一个例子://thisgoesinsidedirective'slinkfunctionscope.getP

javascript - 为什么将字符串作为 "this"传递会导致这种奇怪现象?

我试图理解为什么javascript会做一些(对我来说)意想不到的事情。这里有一些代码,纯粹是为了举例。换句话说,我实际上并不想扩展String(我实际上绑定(bind)到函数和东西)。所以这是没有库的纯JavaScript。vars='blah';String.prototype.foo=function(){console.log('this===s:',this===s);console.log('this==s:',this==s);console.log('typeofthis:',typeofthis);console.log('typeofs:',typeofs);con