You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionParent(){}Parent.prototype.parentSay=function(){return'i am parent';}functionChild(){}Child.prototype.childSay=function(){return'i am child';}Child.prototype=newParent();varpar=newParent();varkid=newChild();console.log(kid.parentSay());//i am parent
window.onload和$(document).ready()的区别
数组去重
1.es6数据结构Set
2.使用push()
3.排序去除相邻重复元素
4.使用splice()
事件委托
得益于事件冒泡,当多个元素有相同的事件,将事件绑定在父元素
更详细请看:事件委托
判断变量类型
更详细请看:判断数据类型
同步和异步(简要阐述)
更详细请看:js运行机制
返回false的几种情况
false,null,0,"",undefined,NaN
js类型值的区别
闭包
输出结果都为10,因为for()循环过程中每次传值,匿名函数并没有执行,相当于执行10次function(){console.log(i);},循环结束i变为10,所以输出全部为10;
使用闭包,自执行匿名函数包裹:
外部匿名函数立即执行,把 i 作为参数,赋值给 j ,因为是立即执行,所以每次循环输出不同值。
引用外层变量不被回收,会相比其他函数占用更高内存,使用不当容易造成内存泄漏。
this的指向
new具体做了些什么
原型和原型链
创建一个函数就会为其创建一个prototype属性,指向这个函数的原型对象,原型对象会自动获得constructor属性,指向prototype属性所在函数。
当调用某种方法或查找某种属性时,首先会在自身调用和查找,如果自身并没有该属性或方法,则会去它的__proto__属性中调用查找,也就是它构造函数的prototype中调用查找,如果构造函数中也没有该属性方法,则会去构造函数的隐式原型中查找,一直到null,就这样形成原型链。
更多有关原型请看:原型和原型链
继承方式
原型链继承:
Child()的原型作为Parent()的实例来继承Parent()的方法属性
因为所有实例都继承原型方法属性,其中一个实例对原型属性值更改后,所有实例调用该属性的值全部更改
构造函数继承:
在子类的构造函数内部通过call或apply来调用父类构造函数
无法实现函数的复用
组合继承:
将原型链继承和构造函数继承结合,最常用的继承模式
原型链继承共享的属性和方法,构造函数继承实例属性
更多继承方式请看:继承方式
数组常用方法
改变原数组:
不会改变元素组:
更详细数组方法总结请看:Array数组方法总结
数据存储
下一篇:[经验总结之JavaScript篇 -- 篇二]
The text was updated successfully, but these errors were encountered: