草庐IT

作用域函数

全部标签

javascript - 'this' 绑定(bind)到订阅函数而不是 Angular2 中的外部组件范围

我在Angular2中的一个组件中遇到问题,因为“this”在我的一个组件中绑定(bind)到错误的上下文。我有其他组件没有发生此问题,但我看不出有什么区别。这是我的代码:组件:import{Component,Input}from'@angular/core';import{FilesService}from"./services/files.service";@Component({selector:'my-app',moduleId:module.id,templateUrl:'/app/views/app.html'})exportclassAppComponent{openF

Javascript 调用对象的链式构造函数

1)调用varobj={num:2};varadd=function(a){returnthis.num+a;};add.call(obj,1);//function.call(obj,arg)2)调用对象的链构造函数。varProduct=function(name,price){this.name=name;this.price=price;}varFood=function(name,price){Product.call(this,name,price);//我目前正在研究javascriptoop,我找到了一个关于Function.prototype.call()链构造函数的

javascript - 试图理解两个简短的 JavaScript 函数中的作用域

下面两个JavaScript函数有什么区别?我知道用var声明的变量在函数内部是局部的,如果用this`关键字声明,则会暴露给外部词。之间还有其他区别吗?functionstudent(param1,param2,param3){this.name=param1;this.age=param2;this.address=param3;}和functionstudent(param1,param2,param3){varname=param1;varage=param2;varaddress=param3;} 最佳答案 简短回答:您将

javascript - 如何优化接受正整数并返回下一个较小正整数的函数?

我正在尝试编写一个函数,它接受一个正整数并返回包含相同数字的下一个较小的正整数,如果没有包含相同数字的较小数字则返回-1。Forexample:nextSmaller(21)==12nextSmaller(531)==513nextSmaller(2071)==2017我写了一个解决这个问题的代码,但我真的不知道如何进一步优化它。请你帮助我好吗?它在repl.it上运行得相当快,但是当我提交它时,它说它需要超过1200毫秒并且不允许我提交它,即使所有测试都通过了。functionnextSmaller(n){varnArray=n.toString().split("")varmini

javascript - 有任何 linter 可以警告 JavaScript 中的副作用吗?

凭借JavaScript的灵active,我们可以编写充满副作用的代码,或者只是纯函数式的代码。我一直对函数式JavaScript很感兴趣,并且想在这个范例中开始一个项目。一个关于它的linter肯定可以帮助我收集好的实践。是否有任何linter来强制执行纯功能和无副作用的风格? 最佳答案 纯度分析相当于SolvingtheHaltingProblem,所以一般情况下,任何一种可以判断代码是纯的还是不纯的静态分析都是不可能的。总会有无穷多的程序,它们是否是纯的是不可判定的;其中一些程序是纯的,一些是不纯的。现在,您故意使用术语“li

javascript - 添加函数作为 Array native 对象的方法(是否可以将函数作为方法调用?)

我觉得MDN文档或其他东西中可能遗漏了一些非常简单的东西,但我已经挖掘了一段时间,但我没有任何线索。有没有办法以类似于方法的方式调用函数?这基本上就是我想要做的:functionaddItem(itemName,quality,quantity/*,arr*/){arr.push([itemName,quality,quantity]);}varsomeArr=[['item',1,1]];someArr.addItem('someOtherItem',2,3);//someArr===[['item',1,1],['someOtherItem',2,3]]现在,请注意,我并不是要创建

javascript - 使用 chrome.tabs.executeScript 执行异步函数

我有一个功能,我想使用chrome.tabs.executeScript在页面中执行,从浏览器操作弹出窗口运行。权限设置正确,并且可以正常使用同步回调:chrome.tabs.executeScript(tab.id,{code:`(function(){//Dolotsofthingsreturntrue;})()`},r=>console.log(r[0]));//Logstrue问题是我要调用的函数要经过几个回调,所以我想使用async和await:chrome.tabs.executeScript(tab.id,{code:`(asyncfunction(){//Dolotso

javascript - 如何在嵌套数组上使用 includes() 函数?

我有一个这样的数组:vararr=[];arr=[['red',685],['green',210],['blue',65]];我还有两个变量:varcolor='blue';varnumber=21;我要做的就是检查arr的每个嵌套数组的第一项,然后更新它的第二项或为其创建一个新数组。这里是一些例子:输入:varcolor='blue';varnumber=21;预期输出:arr=[['red',685],['green',210],['blue',21]];输入:varcolor='yellow';varnumber=245;预期输出:arr=[['red',685],['gree

javascript - Function() 构造函数是否没有像 eval 那样被 V8 优化?

我们正在尝试一种通过WebSockets接收网络组件的方法。这些组件包含自定义脚本,它们应该在组件内的上下文中运行。简而言之,我们有一些脚本字符串并想要运行它们。现在我们为此使用eval,像这样:functionctxEval(ctx,__script){eval(__script);//returnthingswiththectx}并按预期工作,但我读到任何包含eval的函数都没有被V8优化。我想像这样将它转换为newFunction():newFunction("ctx",__script)(ctx);这样我可以实现与上面的ctxEval函数相同的效果。我们知道Function是e

javascript - 带有 ionic 搜索栏焦点的 ionic 触发模式打开功能 - 单击不起作用

我有一个ion-searchbar,单击它会打开一个模式。然而,目前click过程实际上需要两次点击,一次聚焦,一次打开模式。我试图将点击添加到它包含的ion-toolbar中,并尝试使用[disabled]="true"禁用ion-searchbar",但禁用的功能对ion-searchbar不可用。如何在无需双击的情况下触发新模式打开,并且焦点不会出现在原始搜索栏上?HTMLJSopenSearchModal(){letmyModal=this.modalCtrl.create(SearchmodalPage);myModal.present();} 最