JS의 clone() 기능을 사용하는 방법

php中世界最好的语言
풀어 주다: 2018-03-20 09:58:53
원래의
6020명이 탐색했습니다.

이번에는 JS의 clone()함수 사용법과 JS의 clone()함수 사용시 주의사항에 대해 알려드리겠습니다.

1. 문제 해결 코드

코드를 직접 게시하세요.

function clone(obj){            var copy;            switch(typeof obj){                case 'undefined':break;                case 'number':                case 'string':                case 'boolean':                case 'function':copy = obj;break;                case 'object':                    if(obj == null) copy = null;                    else if(toString.call(obj) === '[object Array]')
                    {
                        copy = [];                        for(var i in obj) copy.push(clone(obj[i]));
                    }                    else if(toString.call(obj) === '[object RegExp]')
                    {
                        copy = obj;
                    }                    else 
                    {
                        copy = {};                        for(var j in obj)
                            copy[j]= clone(obj[j]);
                    }
            }            return copy;
        }        var a=undefined;        var b=1;        var c="Hello";        var d=true;        var add=function(a,b){            return a+b;
        }        var e=null;        var f=[1,2,3];        var g=/^\s+/;        var h={
            a:1,
            b:2
        }
        console.log(typeof clone(a));
        console.log(typeof clone(b));
        console.log(typeof clone(c));
        console.log(typeof clone(d));
        console.log(clone(add)(1,2));
        console.log(Object.prototype.toString.call(clone(e)));
        console.log(Object.prototype.toString.call(clone(f)));
        console.log(Object.prototype.toString.call(clone(g)));
        console.log(Object.prototype.toString.call(clone(h)));
로그인 후 복사

결과:

2.질문

처음 이 질문을 봤을 때 typeof [1,2]의 결과가 생각났습니다. ,3] 예 , 어떻게 해야 하나요? 정규식 , null 및 typeof of object는 모두 입니다. 위 코드를 보면 Object.prototype.toString.call(obj)나 toString.call(obj)을 이용하여 해결하고 있습니다.

그럼 obj.toString()을 직접 사용하면 어떨까요? 먼저 obj.toString()이 무엇을 출력하는지 살펴보겠습니다.

null 및 정의되지 않음은 실제로 잘못된 것입니다. toString()은 null 및 undefine의 변환을 완료할 수 없기 때문에 String()

String()이 null 또는 undef 이외의 다른 것을 변환하는 경우에만 사용하십시오. 정의되지 않은 경우 자동으로 toString()으로 변환됩니다. . 다시 주제로 돌아가자

Object.prototype.toString.call(obj)를 사용한 결과는 무엇입니까?

실제로는 다른데 무슨 일인가요?

Array, Null 및 기타 유형은 Object의 인스턴스이지만 각각 toString() 메서드를 재정의합니다. 확인해 보겠습니다.

var arr=[1,2,3];
console.log(Array.prototype.hasOwnProperty("toString"));//判断原型中是否有toString()方法console.log(arr.toString());delete Array.prototype.toString;//删除Array原型里面重写的toStringconsole.log(Array.prototype.hasOwnProperty("toString"));
console.log(arr.toString());
로그인 후 복사

결과:

정말로 다시 작성되었습니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

텍스트 정렬이 양쪽 끝에서 정렬을 달성하는 방법

MySQL은 Mac 시스템에서 루트 비밀번호를 재설정합니다


위 내용은 JS의 clone() 기능을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!