正在重新定义字符串对象中的长度属性
Redefining length property in string object
这两者之间有什么区别?
var me=[];
console.log(me.length)//outputs 0
me.length=5;
console.log(me.length)//outputs 5
但是在这里,
var me = new String("Angus");
console.log(me.length = 2); //(error in strict mode)
console.log(me.length); //5 (not 2 )
我无法将长度属性附加到字符串对象,为什么?我不是在替换原来的length属性,而是在字符串对象中创建一个新的属性,即使它会失败。这里的原因是什么?感谢您的
阵列:
在第一种情况下,如果设置数组的长度,则会用未定义的填充数组。查看文档。进一步阅读
长度属性的值是一个带正号的整数,其值小于2的32次方(232)。
您可以将length属性设置为随时截断数组。通过更改数组的长度属性来扩展数组时,实际元素的数量不会增加;例如,如果在当前长度为2时将其设置为3,则数组仍然只包含2个元素。
和ECMA脚本文档:
length属性最初具有属性{[[Writable]]:true、[[Enumerable]]:false、[[Configuration]]:false}。
字符串:
字符串的长度属性是只读的。无法更改字符串值的属性。查看ECMA脚本文档:
此String对象表示的String值中的字符数。
一旦创建了String对象,此属性将保持不变。它具有属性{[[Writable]]:false、[[Enumerable]]:false和[[Configuration]]:false}。
字符串是不可变的,你不能这样改变它们的长度。
我不是在替换原来的长度属性,而是在字符串对象中创建一个新的属性,即使它会失败
你为什么这么认为?不能有两个具有相同名称的属性,所以是的,您正在尝试替换原始属性。
如果您想要一个子字符串,请使用:
me = me.substr(0,2);
length
返回数组的元素数或字符串中的字符数。它只是只读的,不可写。
对于javascript中的Array对象,length属性被设计为设置并将截断数组。所以它不是只读的。不知怎的,String类似乎已经将length属性设置为只读。如果你想缩短字符串,你可以使用子字符串属性:
var length = 2;
var myString = "Angus";
var myTruncatedString = myString.substring(0,length);
- 如何从对象的原型方法访问JavaScript对象属性
- 如何将数组项添加到对象属性中
- 设置嵌套对象属性的更好方法
- JavaScript管理具有重复属性名称的对象属性
- 如何使用element.myobj.prop等具有对象属性的元素
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何在AngularJS工厂中正确声明对象属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 使用XPath样式访问Javascript JSON对象属性
- 将javascript对象(属性+值)合并到一个对象中
- 数组:使对象属性成为数组键
- 无法从JavaScript中的函数调用对象属性
- Google Closure Advanced |无法识别对象属性|动态属性
- Javascript从匿名函数访问外部对象属性
- 从函数更改对象属性
- 如何从字符串变量访问对象属性
- 从嵌套对象属性中获取排除某个值的最高值
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 传递数量不确定的可能嵌套的对象属性