用js能实现字符串的复制吗

JavaScript013

用js能实现字符串的复制吗,第1张

你说的复制是一个字符串重复n次么?

老的版本可以用Array join,ES6 有几个方法可以实现,例如repeat、padStart和padEnd方法。比如,输出20个x

console.log( Array( 21 ).join( 'x' ) )

console.log( ''.padStart( 20, 'x' ) ) console.log( '', padEnd( 20, 'x' ) ) console.log( 'x'.repeat( 20 ) )

这里其实就是深拷贝和浅拷贝的问题,你上边代码只是浅拷贝,当2种情况

1:涉及对象的赋值 obj = obj1

2: 涉及数组赋值 ary = ary1

那么他们是传地址的,如果改动其中一个,如改动obj.name ,那么obj1.name也是会发生变化的,自己验证一下。

你上边的情况不涉及对象的赋值,而仅仅是字符串的简单复制,用浅拷贝就行了,当你上边变动一下,

var a={name:'yy',age:26}

b=a

var b=new Object()

那么就要考虑深拷贝了 a = b.clone() // Object.prototype.clone()重写

不然改动a.name ,b.name也发生变化

原理我解释一下: 涉及对象和数组, b = a ; 那么b 放弃了new Object的地址,替换成指向a创建的{name:'yy',age:26}存放的地址 ,而 b.name=a.name b和a的地址不一样,所以a.name改变不影响b.name

正确与否,自己写个例子验证