草庐IT

javascript - 如何在javascript中获取给定类型的所有对象

我想检索使用“new”关键字创建的给定类型的所有对象(不是DOM元素)。这可能吗?functionfoo(name){this.name=name;}varobj=newfoo();如何检索对所有foo对象的引用? 最佳答案 没有内置的方法来做到这一点,但是,您可以轻松地让您的foo构造函数存储一个已创建对象的数组。functionfoo(name){this.name=name;foo.objects.push(this);}foo.objects=[];foo.prototype.remove=function(){for(va

javascript - 使用 WebPack,我如何创建准备好使用 "split" bundle ,其中一个依赖于另一个?

我的问题非常接近others我相信的答案仍然需要我想避免的另一个WebPack步骤。但首先是故事:我有一个Node模块(我们称之为libfoo),它提供了一些功能并需要一些第三方模块,和一个小脚本main.js,它提供主要入口点并需要libfoo:ma​​in.js:constfoo=require('foo');functionmain(){foo.bar();}main();我现在想使用WebPack将libfoo和main.js转换为浏览器可执行文件可交付成果。我希望libfoo(相当大)静态驻留在目标系统上,而main.js非常小并且变化很快(试想一个测试场景,其中libfoo

javascript - Svelte react 性如何在函数内部工作?

我在Svelte的react性方面遇到了一些严重的问题。我已经隔离了我认为至少是我的主要问题之一。将变量绑定(bind)到复选框时,在函数内部而不是外部设置变量时,react性似乎会中断。这是有意的行为吗?在那种情况下,为什么?预期的工作流程是什么?示例代码,一个Svelte组件:letfoo=true;//Thisassignmentworksbothontheplaintextview(Foo:true/false)//andonthecheckbox//setInterval(()=>foo=!foo,500)//Thisassignmentworksonlyontheplain

javascript - Node.js require() 与 RequireJS?

HellowithRequireJS我可以像这样设置一个基本路径:base:'./app/'所以当我在./app/foo/bar/例如,我有一个脚本,我在其中使用require('foo');RequireJS然后会搜索./app/foo.js而不是在node_module中文件夹或./app/foo/bar/foo.js当你有一种结构时,这会很方便,作为开发人员,你可以更清楚地看到依赖关系而不是../../foo.js。我可以有./app/foo.js和./app/foo/foo.js和./app/foo/bar/foo.js拥有会更干净:require('foo');require

javascript - 在这段代码中,为什么 foo 和 this.foo 指的是不同的东西?

代码如下:for(vari=0;i为什么i和this.i指的是不同的东西?将此与在全局范围内执行的一些代码进行对比:varx=5;console.log(x);console.log(this.x);//bothwillprint5这里的范围是全局的,上下文也是。变量声明在全局上下文中设置同名属性。另一方面,在函数范围内,这不会发生。vara=function(){varx=5;console.log(x);//5console.log(this.x);//undefinedconsole.log(i);//undefinedconsole.log(this.i);//10}.bind

javascript - 具有相同名称的变量和函数在 block 内返回错误

如果我们声明一个变量和一个同名的函数,它正在接受重新声明。但是当我们在一个block中做同样的事情时,它会显示重新声明错误。代码:varx;functionx(){};//noerror.但在这种情况下,我遇到了错误。{varinside;//re-declarationerror.functioninside(){};}预期结果应该没有错误。 最佳答案 这是EcmaScript6的一个变化。从ES6开始,block范围内不再允许重复绑定(bind)。ES5spec没有这样的限制但是在ES6spec语义已更改:13.2.1Stati

javascript - 使用函数表达式而不是函数声明的优点?

如图所示here,函数声明和函数表达式之间存在一些差异。函数表达式与函数声明相比有一个缺点,如果在函数声明之前调用它会报错。我只想知道使用函数表达式的优点,因为我似乎只看到了上面提到的缺点。我可能有一个例子......函数表达式:alert(foo());//ERROR!foowasn'tloadedyetvarfoo=function(){return5;}函数声明:alert(foo());//Alerts5.Declarationsareloadedbeforeanycodecanrun.functionfoo(){return5;} 最佳答案

javascript - 为什么 foo.hasOwnProperty ('__proto__' ) 等于 false?

varfoo={bar:5}为什么foo.hasOwnProperty('__proto__')等于false?它不能来自原型(prototype)链中更高层的任何对象,因为它特定于这个对象。编辑:有些回答说是在Object.prototype上。但我不明白这是怎么回事。我的问题不是它在哪里,而是为什么它不在它应该在的地方。例如:vara=newFoo();varb=newBar();//FooinheritsfromBar那么a.__proto__不应该等于b.__proto__吗?因为他们都在读取Object.prototype吗? 最佳答案

javascript - 定义后设置函数名

众所周知,我们可以定义带名称和不带名称的函数:var/let/constfoo=function(){}functionbar(){}foo的函数没有自己的名字,但是bar有。console.log(foo.name)-->''console.log(bar.name)-->'bar'是否可以在定义函数后定义函数名?所以做一些事情会让console.log(foo.name)返回不同于''的东西 最佳答案 Asweallknow...var/let/constfoo=function(){}...foo'sfunctionhasn'

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中,传递的函数将在窗口