首页 > 解决方案 > 如何将方法添加到字符串,当它不可变时使用它的原型?

问题描述

String 是不可变的,这意味着我们只能读取它的属性,不能修改或创建或删除任何属性或方法。所以基本上字符串是冻结的。

我的问题是如何向字符串原型添加新方法?

var a = '';
String.prototype.hi = function(){
console.log('hi'); 
}
a.hi()

Output: hi

为什么它没有抛出任何错误?

标签: javascriptstringimmutability

解决方案


String 是不可变的,这意味着我们只能读取它的属性,不能修改或创建或删除任何属性或方法

这不是真的。字符串不可变是指字符串对象本身被冻结。这并不意味着String.prototype作为单独对象的 被冻结。当我们向String.prototype object添加属性时,这并不意味着我们已经改变了任何字符串。它只是另一个对象,而不是字符串本身。


推荐阅读