애플리케이션 유형 객체 복제본

2913 단어

1. 인용 유형은 어떤 것들이 있습니까?인용하지 않는 유형은 어떤 것들이 있습니까?


인용 형식: 대상, 그룹, 함수, 정규 비인용 형식: 수치, 볼 값, 문자열,null,undefined

2. 다음 코드는 무엇을 출력합니까?왜?

var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj 1== obj2);

결과:false obj1과obj2는 두 개의 다른 위치에 저장되어 바늘이 다르기 때문에 같지 않다
{a:1,b:2} 값을 부여하여obj2의 내를obj1에 전달하고 이때obj1의 결과를 출력합니다
true는 값을 부여하여obj1의 바늘을obj2의 바늘과 동일하게 합니다

3. 다음 코드는 무엇을 출력합니까?왜?

var a = 1
var b = 2
var c = { name: '   ', age: 2 }
var d = [a,b,c]

var aa = a
var bb = b
var cc  = c
var dd = d

a = 11
b = 22
c.name = 'hello'
d[2]['age'] = 3

console.log(aa)
console.log(bb)
console.log(cc)
console.log(dd)

결과: 1 a의 값을 aa에 부여한 후 a의 값을 바꾸지만 aa는 독립된 저장 공간으로 영향을 받지 않는다.
동상
{name:'hello', age: 3} var cc = c, c의 바늘을 cc에 주고 c를 바꾸면 cc도 변하고 d는'age'를 수정한다. 즉 c의'age'다.
[1,2,{name:'hello', age:3}] 수조 d의 a, b는var a'= a, var b'= b에 해당한다. 이것은 독립된 저장 공간으로 a의 영향을 받지 않는다.

4. 다음 코드는 무엇을 출력합니까?왜?

var a =1
var c ={ name: 'jirengu', age: 2 }

function f1(n){
  ++n
}
function f2(obj){
  ++obj.age
}

f1(a)
f2(c)
f1(c.age)
console.log(a)
console.log(c)

결과: 함수 f1, f2는 반환값을 쓰지 않았고 f1(a), f2(c), f1(c.age)은undefined만 반환하고 결과는 나오지 않았다.
1 f1(a)은function f1(n) {var n = a}에 해당하며 a의 값에 영향을 미치지 않습니다
{name:'jirengu', age: 3} f2(c)를 실행하면 c= {name:'jirengu', age: 3}, f1(c.age)을 다시 실행합니다. 이때 n=c.age에 해당하는 c.age는 c.age에 영향을 주지 않습니다.

5. 다음 수조를 필터하여 정수만 남기고 원수조에서 직접 조작

var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
}
filter(arr)
console.log(arr)  //[3,1,2]

대답:
function filter(arr){
  for(var i = 0; i < arr.length; i++){
    if(arr[i] <= 0){
      arr.splice(i,1);
      filter(arr)
    }
  }
}

6. 다음 수조를 필터하여 정수만 보존하고 원수조는 변하지 않으며 새 수조를 생성합니다

var arr = [3,1,0,-1,-3,2,-5]
function filter(arr){
}
var arr2 = filter(arr)
console.log(arr2)  //[3,1,2]
console.log(arr)  //[3,1,0,-1,-3,2,-5]

대답:
function filter(arr){
  var arr2 = []
  for(var i = 0; i < arr.length; i++){
    if(arr[i] > 0){
      arr2.push(arr[i])
    }
  }
return arr2
}

7. 깊이 복사 함수를 써서 두 가지 방식으로 실현


1종: 교체
function copy(obj){
  var obj1 = {}
  for(var i in obj){
    if(typeof obj[i] === 'number' || typeof obj[i] === 'boolean' 
    || typeof obj[i] === 'string' || obj[i] === undefined || obj[i] === null ){
      obj1[i] = obj[i]
    } else{
        obj1[i] = copy(obj[i])
    }
   }
return obj1
}

두 번째:JSON
function copy(obj){
  var obj1 = {}
  obj1 = JSON.parse(JSON.stringify(obj))
  return obj1
}

좋은 웹페이지 즐겨찾기