-
this
-
arguments.callee:函数引用
var num =( function (n) { if(n == 1) { return 1; } return n * arguments.callee(n - 1); }(100))
arguments只有callee和length两个属性
-
func.caller:函数自己的属性,表示被调用的那个环境
-
克隆
浅层拷贝:值拷贝
function clone(origin, target) { var target = target || {}; for (var prop in origin) { target[prop] = origin[prop]; } return target; }
深层拷贝:引用拷贝
<script> /*浅层拷贝:值拷贝,深层拷贝:引用拷贝,两个拷贝对象之间的引用的值不会随着一个的改变而另一个发生改变*/ /*算法步骤: 1、判断是原始值还是引用值 typeof 是object的话是引用值(null除外)-->原始值直接 值赋值 2、引用值判断是数组还是对象 3、建立新数组或者对象 instanceof object toString object 4、再次把引用值当做target,递归调用自身*/ var obj = {//origin name: 'abc', age: 122, card: ['visa', 'master'], wife: { name:'xiaozhang', son: { name: "aaa" } } } var obj1 = {};//target function deepClone(origin, target){ var target = target || {},//避免target没传入的时候,系统生成一个对象 tostring = Object.prototype.toString,//用toString来区别引用值是对象还是数组 arrStr = "[object Array]";//用来比对tostring返回的字符串是不是数组 for(var prop in origin){ if(origin[prop] !== 'null' && origin.hasOwnProperty(prop)){ if(typeof(origin[prop])=='object'){ // if(tostring.call(origin[prop])==arrStr){ // target[prop] = []; // }else{ // target[prop] = {}; // } target[prop] = tostring.call(origin[prop])==arrStr ? [] : {}; deepClone(origin[prop],target[prop]); } else{ target[prop] = origin[prop]; } } } return target; } </script>
-
字符串比较诸位比较ASCII码
day10.this
最新推荐文章于 2024-06-14 15:02:13 发布