Я видел две различные методы внедрения неместных функций в JavaScript, Первый является:Object.defineProperty или .prototype?
if (!String.prototype.startsWith) {
Object.defineProperty(String.prototype, 'startsWith', {
enumerable: false,
configurable: false,
writable: false,
value: function(searchString, position) {
position = position || 0;
return this.lastIndexOf(searchString, position) === position;
}
});
}
и вторых:
String.prototype.startsWith = function(searchString, position) {
position = position || 0;
return this.lastIndexOf(searchString, position) === position;
}
Я знаю, что второй один используется для подключения любой метод прототипа цепочки определенных стандартных встроенных объектов, но первая техника для меня нова. Может ли кто-нибудь объяснить, в чем разница между ними, почему используется и почему нет и каковы их значения.
[вы искали 'Object.defineProperty', чтобы попытаться понять, как это работает] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty) ? – zzzzBov
'enumerable',' configurable' и 'writeable' все по умолчанию' false' и, следовательно, не нужны. В любом случае, преимущество этого заключается в том, что, так как свойства, определенные таким образом, не перечислимы, настраиваются или записываются, все, что вы, вероятно, захотите. –
Да, но нашли официальную документацию на 'developer.mozilla.org' немного запутанной. Если мы можем добавить свойство к прототипу определенных стандартных встроенных объектов, то что делает 'defineProperty' на самом деле, это путающая часть. – bantya