jjzjj

javascript - 如何解决 “cannot call method … of undefined” 错误?

functioncalcRoute(){varstart=document.getElementById("start_").value;varend=document.getElementById("end_").value;varrequest={origin:start,destination:end,travelMode:google.maps.TravelMode.DRIVING};directionsService.route(request,function(response,status){if(status==google.maps.DirectionsStatus.

javascript - 尝试了解 underscore.js 源代码 - 在库中调用和应用

在JeremyAshkenas令人敬畏的Underscore.js库中,我试图了解有关源文件的一件事。我不明白这一点:varslice=Array.prototype.slice;args=slice.call(arguments,2);这样:args=Array.prototype.slice.call(arguments,2);.call或.apply是函数的方法。但是在这里,.call指的是哪些函数呢?第一个参数应该是上下文,但是arguments是上下文?第二个参数应该是传递给函数的参数。这里是数字2。这是什么意思?有时在库中,它使用1或0。它们是传递给函数的参数的数量吗?_.

javascript - 如何使用 call/apply 检查函数是否被调用

functionfoo(){console.log('foo',this);}foo();foo.call({bar:1});foo.apply([{bar:1}]);有什么方法可以知道foo()是使用普通调用还是call/apply调用的?http://jsfiddle.net/H4Awm/1/ 最佳答案 没有。您无法检测函数是从call/apply调用还是正常调用。它们不是魔法生物,它们所做的只是设置参数和this值。有一个subtledifference当涉及到未定义/未声明的值时,仅此而已。全部.apply和.call在ES

javascript setTimeout调用错误

我想调用window.setTimeot使用我的自定义范围运行,所以我使用call方法,但有问题。functionfoo(){this.bar=function(){console.log("keepgoing");window.setTimeout.call(this,this.bar,100);}this.bar();}newfoo;在Firefox下这只打印到控制台1行然后什么都没有,在谷歌浏览器下它抛出一个TypeError.我的代码有什么问题? 最佳答案 使用call在这里没有帮助:它用你的this对象调用setTimeo

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 - if 语句导致 TypeError : Cannont call unchain of undefined

我在我的Handlebars模板中使用了if语句。if语句有效,但是当您尝试更改路由时,它会导致UncaughtTypeError:Cannotcallmethod'unchain'ofundefined。我在下面的jsbin中重现了错误演示:http://emberjs.jsbin.com/UnUVorUn/9代码:http://emberjs.jsbin.com/UnUVorUn/9/edit 最佳答案 你的问题发生是因为你的IsLink以大写字母开头,有一个bug在Handlebars模板中使用时,已在1.3.0中修复。但是如

javascript - Function.prototype.call 分配给变量时的意外行为

以下代码调用console.log打印“hello”:console.log.call(console,"hello")但是,下面的代码会抛出TypeError:x=console.log.callx(console,"hello")抛出:UncaughtTypeError:xisnotafunctionat:1:1谁能解释一下这个奇怪的场景?(当然call和apply都是一样的) 最佳答案 .call从其this参数获取要调用的函数。你通过x调用它,没有this参数,所以它没有函数可以调用(或者更确切地说,它试图调用window)