草庐IT

javascript - 使用 TypeScript 在现有原型(prototype)上扩展实例/静态函数

我最近问了一个关于TypeScript扩展JavaScriptAPI中现有原型(prototype)的能力的问题(此处:ExtendingObject.prototypewithTypeScript)。这原来是一个错误,自TypeScript0.9.0Alpha以来已得到解决(现在包括泛型...很棒:-))在TypeScript中,接口(interface)是开放式的,因此如果您查看lib.d.ts,您会发现一个定义JavaScript对象API契约的接口(interface)。您还应该看到Object的变量声明,它定义了Object的静态函数。为了简单起见,它们在这里://Pulle

Javascript 对象定义技术,优点和缺点

在Javascript中定义可重用对象的基本方法有哪些?我说可重用是为了排除单例技术,比如直接用对象字面量表示法声明一个变量。我在某处看到Crockford在他的书中定义了四种这样的方法,但我宁愿不必为这一小段信息买一本书。以下是我熟悉的方法:用this,用new构造(我觉得这叫经典?)functionFoo(){varprivate=3;this.add=function(bar){returnprivate+bar;}}varmyFoo=newFoo();使用原型(prototype),类似functionFoo(){varprivate=3;}Foo.prototype.add=

javascript - 为什么要将空对象传递给 jQuery 的扩展方法?

jQuery有一个非常简洁的extend方法,它将2个对象合并为一个对象。关于jQueryPluginsauthoringpage他们展示了一个例子如下:varsettings=$.extend({'location':'top','background-color':'blue'},options);但是,我看到很多插件传递一个空对象作为第一个参数,像这样:varsettings=$.extend({},{'location':'top','background-color':'blue'},options);据我所知,这两个做的事情完全一样。唯一的区别是defaults是否存储在它

javascript - 如何访问 JSON 对象中的数组?

我有以下JSON对象:[{"comments":[{"created_at":"2011-02-09T14:42:42-08:00","thumb":"xxxxxxx","level":1,"id":214,"user_id":41,"parent_id":213,"content":"xxxxxx","full_name":"xxK"},{"created_at":"2011-02-09T14:41:23-08:00","thumb":"xxxxxxxxxxxxx","level":0,"id":213,"user_id":19,"parent_id":null,"content":

javascript - React 正在渲染 [object object] 而不是 JSX

我试图用一个对象(不是数组)在我的网站上呈现日记条目,但我遇到了一个问题,这是我当前的代码populateJournal(){constj=Object.values(this.state.journal);varjournalEntries='';for(vari=0;i{j[i].title}-{j[i].date}{j[i].entry};}return({journalEntries});当我调用这个函数时,它呈现"[objectobject]"div之间的文本是纯文本。当我将循环更改为“journalEntries=”时,它会按预期呈现最后一个日记条目,但问题是它实际上并没有

javascript - TypeScript hasOwnProperty 等效项

在JavaScript中,如果我想遍历一个字典并设置另一个字典的属性,我会使用这样的东西:for(letkeyindict){if(obj.hasOwnProperty(key)){obj[key]=dict[key];}}如果obj是一个TypeScript对象(类的实例),有没有办法执行相同的操作? 最佳答案 IfobjisaTypeScriptobject(instanceofaclass),isthereawaytoperformthesameoperation?您的JavaScript是有效的TypeScript(more

JavaScript:从对象中检索键名?

假设我有这个:varx={a:{a1:"z",a2:"x"},b:{b1:"y",b2:"w"}}有没有一种方法可以遍历x以获得“a”和“b”?我想要成员名称,而不是其内容(我不想获取{a1:"z",a2:"x"})。谢谢 最佳答案 varnames=[];for(varkeyinx){if(x.hasOwnProperty(key)){names.push(key);}}alert(names.join(','));//a,b 关于JavaScript:从对象中检索键名?,我们在Sta

javascript - 对象的可配置属性和可写属性之间的区别

我看到了以下关于javascript,对象数据属性的属性—可配置:指定属性是否可以删除或更改。—Enumerable:指定属性是否可以在for/in循环中返回。—可写:指定属性是否可以更改。这里“Configurable”和“Writable”代表的是同一个(属性是否可以改变),那为什么还要两个独立的属性呢? 最佳答案 发件人:http://ejohn.org/blog/ecmascript-5-objects-and-properties/Writable:如果为false,则该属性的值不能被改变。Configurable:如果为

javascript - 我什么时候需要使用 hasOwnProperty()?

我读到在循环对象时我们应该始终使用hasOwnProperty,因为对象可以被其他东西修改以包含一些我们不想要的键。但这总是必需的吗?有没有不需要的情况?这对局部变量也是必需的吗?functionmy(){varobj={...};for(varkeyinobj){if(obj.hasOwnProperty(key)){safe}}}我只是不喜欢在不必要的情况下在循环中添加额外的if。DeathtohasOwnProperty这家伙说我根本不应该再使用它了。 最佳答案 Object.hasOwnProperty确定整个属性是在对象本

javascript - 反转 Object.entries 转换

我正在使用Object.entries来从嵌套对象中获取一些值并对其进行过滤。obj=Object.entries(obj).filter(([k,v])=>{returntrue;//someirrelevantconditionshere});我的对象最终是一个由键和值组成的数组。[['key1',val]['key2',val]['key3',val]]是否有直接的方法将它们映射回对象?原始对象结构为:{key:val,key2:val2,key3:val3} 最佳答案 当然,只需使用.reduce分配给一个新对象:const