我刚刚听说的JavaScript方法freeze和seal,可以用来进行任何对象不变.
这是一个如何使用它的简短示例:
var o1 = {}, o2 = {};
Object.freeze(o2);
o1["a"] = "worked";
o2["a"] = "worked";
alert(o1["a"]); //prints "worked"
alert(o2["a"]); //prints "undefined"
Run Code Online (Sandbox Code Playgroud)
这些方法有什么区别,它们能提高性能吗?
如果字符串是不可变的,那是否意味着....(让我们假设JavaScript)
var str = 'foo';
alert(str.substr(1)); // oo
alert(str); // foo
Run Code Online (Sandbox Code Playgroud)
这是否意味着,当在字符串上调用方法时,它将返回修改后的字符串,但它不会更改初始字符串?
如果字符串是可变的,这是否意味着第二个alert()也会返回oo?
我正在做一个简单的功能.将所有单词首字母大写为大写,但它根本不起作用,既不显示任何错误:
function formatTitle(input) {
var words = input.split(' ');
for (var i = 0; i < words.length; i++) {
words[i][0] = words[i][0].toUpperCase();
};
return words.join(' ');
};
var newTitle = formatTitle("all words first-letter should be upper case");
document.write(newTitle);Run Code Online (Sandbox Code Playgroud)
提前致谢.
我目前正在JavaScript的学习过程中,真的对不可变值感到困惑。据我了解,当创建一个值(stings / numbers / booleans)时,就永远无法更改它。
现在我的问题是,我分配值的变量,该变量的值是可变的。我可以为该变量分配新值。那么为什么不变性很重要?
另外,当我为变量分配新值时,以前的值会怎样?它会保留在内存中并阻塞一些空间吗?它是否失去了该变量的指针?究竟会发生什么?
请帮助我了解JavaScript中“可变”和“不可变”概念的实际用法。提前致谢。
我想在Number原型函数中覆盖它并动态更改变量的值,例如:
Number.prototype.xd = function(){
this = 11212;
}
var a = 171717;
console.log(a);
a.xd();
console.log(a);
Run Code Online (Sandbox Code Playgroud)
是我想要的,但它会引发错误.通过这种方式工作Array.prototype.pop方法:
fruits = ["a","b","c","d"];
console.log(fruits);
fruits.pop();
console.log(fruits);
Run Code Online (Sandbox Code Playgroud)
我可以这样做吗?