`

javascript小知识点

 
阅读更多
一:Object.prototype.toString.call(param)  可以用来判断传入参数的构造类型
在toString方法被调用时,会执行下面的操作步骤:
1 如果this的值为undefined,则返回"[object Undefined]".
2 如果this的值为null,则返回"[object Null]".
3 让O成为调用ToObject(this)的结果.
4 让class成为O的内部属性[[Class]]的值.
5 返回三个字符串"[object ", class, 以及 "]"连接后的新字符串.
可以看出,比ES3多了1,2,3步.第1,2步属于新规则,比较特殊,
因为"Undefined"和"Null"并不属于[[class]]属性的值。经统计,可返回的类型有"Arguments", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Math", "Number", "Object", "RegExp", "String"比ES3多了2种分别是arguments对象的[[class]]

二:引用对象其实就是函数对象
	Array.constructor ==Function.constructor
	true
	String.constructor ==Function.constructor
	true
	Object.constructor ==Function.constructor
	true
三:每个function定义的对象有一个prototype属性,prototype属性是指向   prototype对象的,而每个prototype对象都有一个constructor属性,每个constructor属性又指向一个constructor对象也就函数本身。
 使用new生成的对象就没有这个prototype属性。

四:深度克隆:(这个函数还是非常不完善的。)
	var cloneObj = function(obj){
    var str, newobj = obj.constructor === Array ? [] : {};
    if(typeof obj !== 'object'){
        return;
    } else if(window.JSON){
        str = JSON.stringify(obj), //序列化对象
        newobj = JSON.parse(str); //还原
    } else {
        for(var i in obj){
            newobj[i] = typeof obj[i] === 'object' ? 
            cloneObj(obj[i]) : obj[i]; 
        }
    }
    return newobj;
};


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics