Object.defineProperty或.prototype?

时间:2016-08-15 19:08:00

标签: javascript string object prototype defineproperty

我见过两种在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;
}

我知道第二个用于将任何方法附加到特定标准内置对象的原型链,但第一种技术对我来说是新的。 任何人都可以解释它们之间的区别,为什么使用它们以及为什么不使用它们以及它们的意义是什么。

0 个答案:

没有答案