我见过两种在javascript中实现非原生功能的不同技巧, 首先是:
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;
}
我知道第二个用于将任何方法附加到特定标准内置对象的原型链,但第一种技术对我来说是新的。 任何人都可以解释它们之间的区别,为什么使用它们以及为什么不使用它们以及它们的意义是什么。