Это возможно - почти все наследуется от Object.prototype
, так что вы можете поместить метод на Object.prototype
:
Object.prototype.printNice = function() {
console.log(JSON.stringify(this));
};
(5).printNice();
({ foo: 'bar' }).printNice();
В синтаксисе Typescript:
declare global {
interface Object {
printNice: () => void;
}
}
Object.prototype.printNice = function () {
console.log(JSON.stringify(this));
};
(5).printNice();
({ foo: 'bar' }).printNice();
Но это, вероятно, не очень хорошая идея, поскольку объекты не ожидают иметь свойство printNice
. Отключение встроенных объектов может легко создать проблемы .
Обратите внимание, что объекты, которые не наследуют от Object.prototype
, не будут иметь метод в своей цепочке прототипов :
Object.prototype.printNice = function() {
console.log(JSON.stringify(this));
};
const someObj = Object.create(null);
someObj.foo = 'bar';
// Error, property does not exist:
someObj.printNice();
(но почти все объекты, включая примитивные оболочки, наследуются от Object.prototype
)