面向对象:
1、*****继承具有很多很多的面试和笔试题:
1、判断是自有还是共有:
1、判断自有:obj.hasOwnProperty("属性名");
结果结果为true,说明是自由属性,如果结果为false,有两种可能,有可能是共有,也有可能是没有
2、判断共有:
if(obj.hasOwnProperty("属性名")==false&&"属性名" in obj){//in关键字,会自动查找整条原型链上的属性,找到了结果为true,找不到结果为false
共有
}else{
没有
}
完整公式:
if(obj.hasOwnProperty("属性名")){
自有
}else{
if("属性名" in obj){
共有
}else{
没有
}
}
2、修改和删除:自有和共有
自有:
修改:obj.属性名=新属性值;
删除:delete obj.属性名;
共有:
修改:原型.属性名=新属性值;//千万不要觉得,自己能拿到,就能直接修改,这样很危险,并没有修改原型东西,而是再本地添加了一个同名属性
删除:delete 原型.属性名;//千万不要觉得,自己能拿到,就能直接删除,操作会无效
3、*如何为老IE的数组添加indexOf方法 - 这道题不是固定的,可能问如何为一类人创建某个方法
if(Array.prototype.indexOf===undefined){//老IE
Array.prototype.indexOf=function(key,starti){
starti===undefined&&(starti=0);
for(var i=starti;i{
操作;
},间隔毫秒数)
}
}
var inner=fdjl()
总结:
两链一包:
1、作用域链:以函数的EC的scope chain属性为起点,经过AO逐级引用,形成的一条链式结构
作用:查找变量,来带了变量的使用规则:优先使用局部的,局部没有找全局,全局没有就报错
2、原型链:每个对象都有一个属性.__proto__,可以一层一层的找到每个人父亲,形成了一条链式结构
作用:找共有属性和共有方法的,哪怕自己没有会悄悄的向上查找,如果最顶层也没有才会报错
最顶层是Object的原型,甚至上面放着我们眼熟的API - toString,怪不得人人都可以使用
3、闭包:希望保护一个可以【反复使用的局部变量】的一种词法结构,其实还是一个函数,只是写法比较特殊
作用:专门用于防抖节流
|