javascript foo.call(object) vs. object.foo()
javascript foo.call(object) vs. object.foo()
我正在查看jQuery源代码,然后我看到他们使用foo.call(context)
而不是context.foo()
。
例如 - 假设this
是他们使用的数组:
return slice.call( this );
而不是:
return this.slice();
有什么区别,是执行这些调用的首选方式(就性能而言)吗?
问题是"foo"实际上可能不是"上下文"的属性。在这种情况下,唯一真正的选择是使用.call()
(或.apply()
,视情况而定)。
如果您确实有一个具有"foo"属性的对象,则该对象是一个函数,那么就没有真正的理由使用 .call()
。
除了@Pointy的回答之外,成员函数的直接调用似乎比 Class.prototype.foo 快得多:
http://jsperf.com/javascript-foo-call-object-vs-object-foo
相关文章:
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 有没有一种方法可以列出Ember.Object的所有绑定
- 如何取消object.prototypes javascript的一个函数
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- if(foo!==null)的计算结果为true,即使foo为null
- 将*.js文件的内容放入Object中
- Object.prototype using 'this'
- 使用Object.create()的角度服务继承
- 渲染<选项值=“;foo”;选择>在服务器上
- 如何使用object.assign()从其他对象引用基本对象属性
- 循环的数组推入在Object容器中具有不同的值
- reducers在redux中得到Function not Object,what'it’他错了
- JSON.stringify和Object.keys在同一个对象上产生不同的结果
- 在使用object.create创建的对象中使用super
- Join架构验证:Join.object定义数组中的有效键
- 为什么Object.protype.toString.call(foo)可以检测到foo's类型
- 如何在Javascript/AngularJS中动态地将foo设置为Object Property Name
- javascript foo.call(object) vs. object.foo()
- Object.create(foo)和new Object(foo)之间的区别