草庐IT

object-call

全部标签

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)

javascript - IE Javascript 错误 "Object doesn' t 支持此属性或方法"within jQuery

出于某种原因,我在InternetExplorer8中的jquery.js(版本1.4.3,非压缩版本)第3156行收到以下Javascript错误:对象不支持此属性或方法。在Firefox和GoogleChrome中不会出现错误。这是错误发生的行:if((match=Expr.leftMatch[type].exec(expr))!=null&&match[2]){调查(console.log(Expr.leftMatch[type]))产生以下有趣的结果:在GoogleChrome中,它输出/(^(?:.|\r|\n)*?):((?:[\w\u00c0-\uFFFF\-]|\\.)

javascript - JavaScript 中的 `new` 只是 `.call` 的语法糖吗?

在JavaScript中,我想知道new是否有什么特别之处,或者它是否只是call()的语法糖。如果我有这样的构造函数:functionPerson(name,age){this.name=name;this.age=age;}是varbob=newPerson("Bob",55);任何不同于varbob;Person.call(bob=newObject(),"Bob",55);? 最佳答案 它们在你的例子中并不等价,因为bob没有继承自Person.prototype(它直接继承自Object.prototype).等效版本是P

javascript - 为什么 Object.__proto__.__proto__ 不为空?

我的理解是Object.__proto__是javascript中的“顶级”原型(prototype)对象。我希望它的__proto__为空,但在谷歌浏览器中(没有尝试过其他浏览器),它不是。这是为什么?编辑我知道下图可能是下图的重新哈希,但我自己做了它以检查我的理解。它有什么问题吗? 最佳答案 Object是一个函数,它的__proto__是一个空函数function(){}。根对象是一个空对象{},而不是Object。所以,当你有一个像{foo:1,bar:1}这样的对象时,它的关系如下所示:

javascript - JS函数声明: curly brace object assigned with an empty object in parameter declaration

这是代码,exportfunctioncreateConnect({connectHOC=connectAdvanced,mapStateToPropsFactories=defaultMapStateToPropsFactories,mapDispatchToPropsFactories=defaultMapDispatchToPropsFactories,mergePropsFactories=defaultMergePropsFactories,selectorFactory=defaultSelectorFactory}={}){...}函数参数声明中的{connectHOC=

javascript - 使用 (function() { … }).call(this) 包装文件与使用简单 () 进行调用

这个问题在这里已经有了答案:Reasonbehindthisselfinvokinganonymousfunctionvariant(5个答案)关闭8年前。backbone.js源代码使用这样的函数包装器:(function(){...}).call(this);见http://backbonejs.org/docs/backbone.html#section-185.更常见的是,我看到使用以下内容:(function(){...})();这两者的行为何时不同?我的印象是它们是等价的,但我认为鉴于Backbone使用.call(this)而不是较短的替代方案,所以一定存在差异。

javascript - 使用本地主机测试 Facebook 共享对话框 - "Unable to resolve object at URL http://localhost"

我正在尝试仅使用URL(而非SDK)来使用当前(在提出此问题时)的Facebook共享对话框。我的JS看起来像这样:openFacebookPopup:function(url){this.openSharerWindow('https://www.facebook.com/dialog/share'+'?app_id=145634995501895'+'&display=popup'+'&href=http%3A%2F%2Flocalhost'+'&redirect_uri=http%3A%2F%2Flocalhost');returnfalse;}我得到的错误是:Couldnotr

javascript - 当我 JSON.stringify(object) 我得到一个疯狂的字符串作为值

当我从我的快速路由向我的客户端发送一个包含对象数组的对象时,我得到一个[Objectobject]然后当我尝试将它字符串化时,我得到这个带有控制台消息的疯狂字符串varmessages=""console.log(messages)将其打印到控制台...{"messages":[{"content":"coolmane","creator":"joe"},{"content":"test4","creator":"joe"},{"con

javascript - Object.keys(anObject) 是否返回一个对象的原型(prototype)?

这个问题在这里已经有了答案:Whydoesjavascript's"in"operatorreturntruewhentestingif0existsinanarraythatdoesn'tcontain0?(6个答案)关闭4年前。我正在阅读EloquentJavaScript'sMapsection我无法理解它的最后一段:Ifyoudohaveaplainobjectthatyouneedtotreatasamapforsomereason,itisusefultoknowthatObject.keysreturnsonlyanobject’sownkeys,notthoseinth

javascript - Object.prototype.toString.apply(value) 与 value.toString() 有何不同?

据我了解,前者将:在Object上找到toString方法在value上调用它,但this绑定(bind)到valuevalue.toString()会。在value的原型(prototype)链中找到toString方法通过函数调用模式调用toString将与this绑定(bind)的值作为值所以不同之处在于,如果值中有一个重写的toString方法……它将使用它。我的问题是:这是唯一的区别吗?相反,如果我们想保证我们正在调用Parent的方法而不可能被Child覆盖,那么此模式是否是使用的标准模式?(在这种情况下,Parent=Object,Child=类值来自,如果我们以经典方式