Как применять, связывать и вызывать методы, доступные в Object - PullRequest
1 голос
/ 07 апреля 2019

Я пытался понять наследование прототипа в javascript, а затем наткнулся на метод apply, который является собственным свойством Function.prototype, но когда я пытаюсь проверить свойство apply на Object, оно действительно там тоже существует.Теперь я в замешательстве, так как знаю, что большинство родительских объектов - Object, а не Function.

Чтобы попробовать то, что я говорю, просто запустите их в консоли Chrome.

Function.prototype.hasOwnProperty('apply') // o/p --> true


    Object.hasOwnProperty('apply'); // o/p --> false
    Object.prototype.hasOwnProperty('apply'); // o/p --> false
    Object.apply // o/p --> ƒ apply() { [native code] }

1 Ответ

1 голос
/ 07 апреля 2019

Зависит от того, о каком Object вы говорите.

Функция Object имеет Function.prototype в своей цепочке прототипов, Object.apply существует.

Однако он не существует на реальном объекте. Следовательно, apply может использоваться только с Object в качестве статического метода (поскольку apply не присоединен к Object.prototype):

const objectFunctionHasApply = Object.apply || false;
const literalObjectHasApply = ({}).apply || false;
console.log(objectFunctionHasApply);
console.log(literalObjectHasApply);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...