js- 참조 유형 대상 복사
1. ; 2. ; 3. ;
1. 인용 유형은 어떤 것들이 있습니까?참조되지 않는 유형
2. 다음 코드는 무엇을 출력합니까?무엇 때문에
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);// :fasle: , .
console.log(obj1 = obj2);// : Object {a: 1,b: 2}
: obj2 obj1, .
console.log(obj1 == obj2);// :ture :
3. 다음 코드는 무엇을 출력합니까?무엇 때문에
var a = 1;
var b = 2;
var c = { name: ' ', age: 2 };
var d = [a, b, c];
var aa = a;//a=1
var bb = b;//a=2
var cc = c;
var dd = d;
a = 11;//aa=1: , a=11,aa a ( ).
b = 22;//bb=2
c.name = 'hello';//{name: "hello", age: 2}
d[2]['age'] = 3;// c {name: "hello", age: 3}
console.log(aa); //1
console.log(bb);//2
console.log(cc);//Object{name: "hello", age: 3} : : , ,
console.log(dd);//[1,2,Object{age: 3, name: "hello"}]
4. 다음 코드는 무엇을 출력합니까?무엇 때문에
var a = 1;
var c = { name: 'jirengu', age: 2 };
function f1(n){
//var n =a; , a .
++n;
}
function f2(obj){
++obj.age;
}
f1(a);//a=1 n=2
f2(c);//c={name: 'jirengu', age: 2 };
f1(c.age);//c={name: 'jirengu', age: 3 }; a , c age .
console.log(a);//a=1
console.log(c);//Object {name: 'jirengu', age: 3 };
5. 다음 수조를 필터하여 정수만 남기고 원수조에서 직접 조작
var arr = [3,1,0,-1,-3,2,-5];
function filter(arr){
for(var i=0;i
6. 다음 수조를 필터하여 정수만 보존하고 원수조는 변하지 않으며 새 수조를 생성합니다
방법1:
var arr = [3,1,0,-1,-3,2,-5];
function filter(arr){
var newarr = [];
for(var i = 0;i0 ){
newarr.splice(i,0,arr[i]);//splice 0, , .
}
}
return newarr;
}
var arr2 = filter(arr);
console.log(arr2); // [3,1,2]
console.log(arr); // [3,1,0,-1,-2,2,-5]
방법2:
var arr = [3,1,0,-1,-3,2,-5];
function filter(arr){
var newArr = [];
for(var i = 0; i0){
newArr.push(arr[i]);
}
}
return newArr;
}
var arr1 = filter(arr);
console.log(arr1);
console.log(arr);
방법3:
var arr = [3,1,0,-1,-3,2,-5];
function filter(arr){
var j = 0;
var newarr = [];
for( var i = 0; i < arr.length; i++){
if( arr[i] > 0){
newarr[j] = arr[i];
j++;
}
}
return newarr;
}
var arr2 = filter(arr);
console.log(arr2); // [3,1,2]
console.log(arr); // [3,1,0,-1,-2,2,-5]
7. 깊이 복사 함수를 써서 두 가지 방식으로 실현
JavaScript에서 Object와 Array와 같은 인용 유형 값에 대해 한 변수에서 다른 변수로 인용 유형 값을 복사할 때 이 값의 복사본은 사실 하나의 지침이다. 두 변수는 같은 무더기의 대상을 가리키고 그 중의 변수를 바꾸면 다른 변수도 영향을 받는다.
function deepCope(obj){
var newObj = {};
for(var key in obj){
// ,
if(obj.hasOwnProperty(key)){//obj.hasOwnProperty(prop)
if(typeof obj[key] ==== 'number' ||
typeof obj[key] ==== 'string' ||
typeof obj[key] ==== 'undefined' ||
typeof obj[key] ==== 'boolean' ||
obj[key] ==== null){// typeof null object, typeof obj[key] === 'object'
newObj[key] = obj[key];
}else{
newObj[key] = deepCope(obj[key]);//
}
}
return newObj;
}
o = new Object();
o.prop = 'exists';
function changeO() {
o.newprop = o.prop;
delete o.prop;
}
o.hasOwnProperty('prop'); // true
changeO();
o.hasOwnProperty('prop'); // false
.
JOSN stringify js JSON ,parse JSON js
// JSON
function deepClone(source){
return JSON.parse(JSON.stringify(source));
}
var o1 = {
arr: [1, 2, 3],
obj: {
key: 'value'
},
func: function(){
return 1;
}
};
var o2 = deepClone(o1);
console.log(o2); // => {arr: [1,2,3], obj: {key: 'value'}}
참고 자료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.