javascript - 数组字面量方法调用和对象字面量方法调用的区别

标签 javascript

在 JavaScript 中,我想知道为什么我可以这样做:

[].slice.apply([1,2,3], [0, 2]) // returns [1, 2]

据我所知,这相当于:

Array.prototype.slice.apply([1,2,3], [0, 2]); // returns [1, 2]

但我不能这样做:

{}.hasOwnProperty.apply(a, ['a']);

这将允许不输入这么长的行:

Object.prototype.hasOwnProperty.apply(a, ['a']); // returns true or false

嗯,当我这样做时,我也发现我实际上可以做到所有这些:

''.indexOf.apply('asdasd', ['s']); // returns 1
true.toString.apply(true); // returns // "true" as string

{} 是怎么回事? :-) 为什么它很特别?

最佳答案

hasOwnProperty('a') 是拼写错误吗?

{}.hasOwnProperty.apply(a, ['a']);

但是,由于 JavaScript 将 {} 解释为 block 分隔符,因此这不太有效。只需添加括号:

({}).hasOwnProperty.apply(a, ['a']);

检查一下:

> var a = {'a': 1}
  Object
> {}.hasOwnProperty.apply(a, ['a']);
  SyntaxError: Unexpected token .
> ({}).hasOwnProperty.apply(a, ['a']);
  true

关于javascript - 数组字面量方法调用和对象字面量方法调用的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286125/

相关文章:

php - 使用 php 在 div 上单击计数器

JavaScript 错误

javascript - 将使用 'new' 关键字的 Javascript 函数表达式视为 'static' 是否正确

javascript - 如何在随机有序列表中随机化多个无序列表?

javascript - mssql中数据删除成功与否后如何显示警告框

javascript - 如何使用空格键自动播放音乐并停止/继续播放?

javascript - Moment.js 将分钟时间添加到小时时间 :minutes

javascript - Bootstrap 3 中的 Tokenfield(标记输入)自动完成功能不起作用

javascript - d3.behavior.zoom() 跳来跳去

javascript - 如何保证 AngularJS 中的多种功能