草庐IT

javascript - 从 for-in 循环获取属性名称背后的简单理论?

首先,我想说我在理论上很厉害。我不喜欢抽象。在尝试使用它们之前,我想知道它们是如何工作的。我一直在到处寻找获取for-in循环的属性名称(而不是值)背后的简单理论。我将在代码中演示它,希望有人可以解释它是如何工作的……varobj={one:1,two:2,three:3};//Abasicobjectinstantiatedwith3publicproperties.for(varpropinobj){console.log(prop);//logs"one","two"and"three"???}我认为它会将prop变量评估为1、2和3,但它会记录实际的属性名称。我知道obj[pr

javascript - 在 OOP Javascript 中使用方法的优点

我遇到了一个以奇怪的方式构建的JS文件:varmodal=(function(){varmethod={};//Centerthemodalintheviewportmethod.center=function(){};//Openthemodalmethod.open=function(settings){};//Closethemodalmethod.close=function(){};returnmethod;}());我理解将函数包装到“模态”对象中的部分,但为什么将所有函数绑定(bind)到method然后在最后返回它? 最佳答案

javascript - `this` 和 `prototype` 有什么区别? javascript 哎呀

这个问题在这里已经有了答案:Useof'prototype'vs.'this'inJavaScript?(15个答案)关闭8年前。在codecademy.com上学习javascript类(class)时,我变得有点困惑。首先我们学习了如何向类中添加方法:functionDog(breed){this.breed=breed;this.sayHello=function(){console.log("Hellothisisa"+this.breed+"dog");}};varsomeDog=newDog("goldenretriever");someDog.sayHello();然后我

javascript - 通过 "this"和 "prototype"分配函数有什么区别?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Useof'prototype'vs.'this'inJavascript?我对这两种向函数添加方法感到困惑。让我用一个例子来解释。varfoo=function(){this.bar=function(){alert('Iamamethod')}}foo.prototype.baz=function(){alert('Iamanothermethod')}varcar=newfoo();此时我们可以对汽车使用baz和bar方法。好吧,但是它们之间有什么区别。向函数的原型(prototype)或其构造函数添加

javascript - jQuery Deferred/Promise 设计模式和用例

我的问题很笼统,可以在SO上找到一些相关问题,但这些都不是我要找的。我一直在阅读/玩弄jQueryDeferredobject我看到它在库本身内部被大量使用来处理ajax请求和动画等。我了解一般功能,并认为它已被证明在某些情况下非常有用。jQuery库使用这个概念非常优雅地解决了一些问题。现在我的问题是:我认为概述不同的问题/解决方案场景会非常有用,这些场景可以使用Deferred对象优雅而稳健地解决。在哪些情况下需要使用jQueryDeferred的解决方案?javascript软件设计中的哪些一般模式可以区分,可以使用jQuery延迟功能最优雅地解决?我打算本着每个OO分析师都知道

javascript - OO JavaScript 调用父方法

我一直在努力掌握OOJavaScript并创建了一个简单的示例。functionBasePage(name){this.init(name);}BasePage.prototype={init:function(name){this.name=name;},getName:function(){returnthis.name;}}functionFaqPage(name,faq){this.init(name,faq);}FaqPage.prototype=newBasePage();FaqPage.prototype={init:function(name,faq){BasePage

javascript - 自推对象构造器

所以JavaScript是一种函数式语言,类是由函数定义的,函数作用域对应于类的构造函数。经过相当长的时间研究如何在JavaScript中进行OOP,我现在明白了。我想做的事情不一定可行,所以我首先想知道这是否是个好主意。假设我有一个数组和一个如下所示的类:varEntry=function(name,numbers,address){this.name=name;if(typeofnumbers=="string"){this.numbers=[];this.numbers.push(numbers);}elsethis.numbers=numbers;this.address=ad

javascript - ES6 类超出最大调用堆栈大小

这个问题在这里已经有了答案:JavaScriptclasseswithgetterandsettercauseRangeError:Maximumcallstacksizeexceeded(5个答案)关闭7年前。我正在尝试使用新的ES6Class关键字,我有一个时髦的场景,它给我一些无限循环并最终Maximumcallstacksizeexceeded。这是我的类(class):'usestrict';classGroup{setname(newName){this.name=newName;}}module.exports=Group;我用这个mocha测试调用它:'usestric

JavaScript 作用域问题

作为一个试图对我的javascript编程采用更面向对象的方法的人,我遇到了一个绊脚石,我确信这可能是非常基本的东西,但是,采用以下对象实现(假设jQuery对象可用于此代码):functionFoo(){this.someProperty=5;}Foo.prototype.myFunc=function(){//dostuff...};Foo.prototype.bar=function(){//here'this'referstotheobjectFooconsole.log(this.someProperty);$('.some_elements').each(function(

javascript - 值、原型(prototype)和属性的区别

好的!首先,这个问题来自一个在jQuery世界中挖掘得太深(并且可能迷路)的人。在我的研究中,我发现jquery的主要模式是这样的(如果需要,欢迎更正):(function(window,undefined){jQuery=function(arg){//ThejQueryobjectisactuallyjusttheinitconstructor'enhanced'returnnewjQuery.fn.init(arg);},jQuery.fn=jQuery.prototype={constructor:jQuery,init:function(selector,context,ro