在JavaScript中如何检测一个变量是String类型?
提示:
String类型有两种生成方式:
var str = “hello world”; var str2 = new String(“hello world”);
参考代码:
function IsString(str){
return (typeof str == "string" || str.constructor == String);
}
var str = "";
alert(IsString(1));
alert(IsString(str));
alert(IsString(new String(str)));
编写一个函数,检测参数是否为函数?
参考:
/**
* 判断对象是否为函数,如果当前运行环境对可调用对象(如正则表达式)
* 的typeof返回'function',采用通用方法,否则采用优化方法。
*
* @param {Any} arg 需要检测是否为函数的对象
* @return {boolean} 如果参数是函数,返回true,否则false
*/
function isFunction(arg) {
if (arg) {
if (typeof (/./) !== 'function') {
return typeof arg === 'function';
} else {
return Object.prototype.toString.call(arg) === '[object Function]';
}
}
return false;
}
为了保证页面输出安全,经常需要对一些特殊的字符进行转义,编写一个函数escapeHtml,将<、>、&、”进行转义。
参考:
function escapeHtml(str) {
return str.replace(/[<>”&]/g, function(match) {
switch (match) {
case “<”:
return “<”;
case “>”:
return “>”;
case “&”:
return “&”;
case “\””:
return “"”;
}
});
}
实现一个函数clone,对JavaScript中的5种主要的数据类型(Number、String、Object、Array、Boolean)进行值复制操作。
参考:
//考点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针是否清楚
//考点2:是否知道如何判断一个变量是什么类型
//考点3:递归算法的设计
Object.prototype.clone = function(){
var o = this.constructor === Array ? [] : {};
for(var e in this){
o[e] = typeof this[e] === "object" ? this[e].clone() : this[e];
}
return o;
}