1, 참조 참조는 객체의 실제 위치에 대한 포인터입니다. 다음의 따옴표 사용 예를 살펴보세요.
]
In 이 예에서는 두 개체가 모두 동일한 개체를 가리킵니다. 한 개체의 속성 내용이 수정되면 다른 개체에도 영향을 미칩니다.
또 다른 예를 살펴보겠습니다. 이번에는 참조를 설명하기 위해 배열을 사용합니다.
외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]
[Ctrl A 모두 선택 참고:
외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]
[Ctrl A 모두 선택 참고:
외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]
As 이 예에 표시된 것처럼 문자열 작업을 수행할 때 결과는 항상 문자열의 수정된 버전이 아니라 새 문자열 개체입니다. '고급 JavaScript 프로그래밍'이라는 책을 읽어 보셨는지 모르겠습니다. 직설적으로 말하면 참고용입니다. 관심있으신 분들은 가서 구경하셔도 좋을 것 같아요.
JavaScript는 다른 개체에 대한 일련의 참조를 유지 관리하는 언어로, 참조를 통해 프로그램에 큰 유연성을 제공할 수 있습니다.
2. 함수 오버로딩
함수 오버로딩의 특징은 전달된 매개변수의 개수나 유형에 따라 함수를 오버로드하여 다른 기능을 발휘하는 것입니다. 이는 두 가지 사항에 의존해야 합니다. 하나는 들어오는 매개변수의 수를 결정하는 것이고, 다른 하나는 들어오는 매개변수의 유형을 결정하는 것입니다.
[Ctrl A 모두 선택 참고:
[Ctrl A 모두 선택 참고: 외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다 ]
2-2,判断传入参数的类型
第一种判断类型的方式:
判断类型需要用到JavaScript中另一个操作符——typeof。 它用来表达变量内容的类型,返回的是字符串。比如如果一个变量是字符串,那么typeof后,则返回( "string" )。
经常我们会用到如下判断:
if( typeof num == "string" ){
num = parseInt( num );//如果是一个字符串,则把字符串解析出整数
}
if( typeof arr== "string" ){
arr= arr.split(",");//如果是一个字符串,则根据逗号来分割成数组
}
例如把前面的makeArr()函数改成只能接受字符串类型的参数,代码如下:
最终结果 a.length 为2,因为后面2个参数是number 类型。
第二种判断类型的方式:
此方法需要引用所有JavaScript对象都带有的一个属性,构造函数——constructor。这一属性引用的是原本用来构造该对象的那个函数。
if( num.constructor == String ){
num = parseInt( num );//如果是一个字符串,则把字符串解析出整数
}
if( arr.constructor == String ){
arr= arr.split(",");//如果是一个字符串,则根据逗号来分割成数组
}
if( newArr.constructor == Array ){
newArr = newArr.join(",");//如果是一个数组,则根据逗号来组成字符串
}
执行constructor后的结果是一个对象,而执行typeof后的结果是一个字符串。看下表的对比:
变量 |
typeof 变量 |
变量.constructor |
{a:"b"} |
"object" |
Object |
["a","b"] |
"object" |
Array |
function(){} |
"function" |
Function |
"a" |
"string" |
String |
66 |
"number" |
Number |
true |
"boolean" |
Boolean |
new User() |
"object" |
User |
通过对传入参数的数量和类型的判断,那么函数重载也就简单了。