이번에는 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)));
결과:
처음 이 질문을 봤을 때 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!