2016-11-07 4 views
0

Почему Object.apply есть в предложениях консоли, когда нет никакой пользы случае же,Почему я вижу объект Object.apply в консоли, когда нет случая, я могу использовать его на объекте?

enter image description here

только раз, когда мы используем метод ОТНОСИТЬСЯ это при вызове функции.

Его даже не упоминается в mdn's js Object reference. Это есть в прототипе функции в mdn.

и если есть какой-либо случай, когда я могу использовать заявку при использовании объекта, пожалуйста, дайте мне знать.

+1

Применить является свойством функции, а 'Object' является функцией. Следовательно, применение доступно. Попробуйте 'Typeof (Object)' – Rajesh

+1

Если вы заметили, 'typeof (Object)' is "function". Таким образом, он имеет весь метод в Function.prototype (например, call, apply). И я тоже не вижу случаев, когда нам нужно использовать 'Object.apply'. – vothaison

+0

@ Vothaison, Пожалуйста, добавьте этот комментарий в качестве ответа. –

ответ

2

Object - это функция, функции которой имеют метод apply.

console.log(Object.constructor === Function); 

как и для всех функций, ссылающихся применить вызов функции, другими словами, если F является функцией, то F(x, y, z) такая же, как F.apply(this, [x, y, z]) (первый аргумент будет значение this, когда внутри функции).

Из спецификации (раздел 19) Object в Javascript (то есть то, что изначально связан с именем «Объект» в глобальный объект) является конструктором, который может быть вызван с дополнительным аргументом x и:

  • Если NewTarget не является ни undefined, ни активной функцией, то return OrdinaryCreateFromConstructor(NewTarget, "%ObjectPrototype%"). Это означает, что вызов new Object() - это как письмо ({}).

  • Если значение null, undefined или не указано, возврат ObjectCreate(%ObjectPrototype%). Это означает, что вызов Object(undefined) или Object(null) (без new) также похож на запись ({}) для создания нового стандартного объекта.

  • В противном случае возвращается ToObject(value). Это означает, что Object(x) вызывает преобразование в объект. Например, Object(42) предоставит вам номер в коробке, но Object(x)===x, если x уже объект.

IMO вызов Object.apply не собирается очень часто в программах JavaScript (вы, вероятно, можете быть счастливым продуктивным Javascript программистом для всей вашей жизни без того, чтобы прикоснуться к такому роду вещь).

+0

Можете ли вы сказать мне пример использования Object.apply? –

0

Если вы заметили, typeof (Object) является «function» -> Это функция. Итак, у него есть все методы из Function.prototype (например, call, apply, bind, ...).

Я тоже не вижу никаких случаев, когда нам нужно использовать Object.apply.

0

Object конструктор обычно используется для преобразования примитивов в объекты:

1 instanceof Number // false 

но

Object(1) instanceof Number // true 

Так можно (хотя и довольно искусственный) использовать случай Object.apply будет преобразовывать первый элемент массив примитивов в объект.

var singletonArray = ['foo']; 
var foo = Object.apply(null, singletonArray); 
// foo is an Object 
// (foo instanceof String) === true 

Это не может быть очень полезным, но поскольку Object является функцией, имеющий метод .apply не является исключение, а правило.