一,经常看的网站
CSDN , MDN ,掘金 , ,语雀
六,.typeof 运算符:
(2) 引用类型:Array Object,或 Null 类型,返回object
typeof 函数地址 ,返回function
九, 关键字:instanceof 判断实例对象 (d instanceof da;//判断d是不是da的实例对象)
十。 isNaN(值) 判断非数值
9.运算符:
(5)条件运算符:var iMax = (iNum1 > iNum2) ? iNum1 : iNum2;
10.运算符优先级:小括号>算术运算符>比较运算符>逻辑运算符>赋值运算符
十一, 异步加载关键字 : async defer
防抖和节流:debounce和throttle
应用:响应跟不上触发频率这类问题的两种解决方案
Jquery:
$.each(数组或对象 ,i,val) 遍历数组和对象
$().each() 遍历元素
$().toggleClass('hidden') 切换状态
闭包: (closure)
概念:有权访问另一个函数(父函数)作用域中的变量的函数
优点:避免全局变量的污染,局部变量不被销毁。
缺点:使用不当会造成内存泄漏
function aaa() {
var a = 1;
return function(){
alert(a++);
};
}
a = 8;
var fun = aaa();
fun();
fun();
fun = null;
闭包有三个特性:
1、函数嵌套函数
2、子函数内部可以引用外部父函数的参数和变量
3、参数和变量不会被垃圾回收机制回收
构造函数:
经历的步骤:
(1 )创建一个新的空对象
(2)将构造函数的作用域赋值给这个对象(因此this就指向了这个对象)
(3)执行构造函数中的代码(即给新对象添加属性和方法的过程)
(4)返回对象
原型对象prototype:
1、每一个构造函数都自动有一个属性叫做原型(prototype)。
2、这个属性是指向一个对象的引用,这个对象称作“原型对象”(
初始化时只有constructor属性和_proto_属性)。
3、当通过new来生成一个类的对象时,新创建的对象会从原型对象上继承属性和方法
4、原型对象为一个特定的类 声明通用(也就是被实例对象共享)的变量或者函数。
5、原型对象有一个属性: constructor, 指向创建该原型对象的构造函数的父类的构造函数。
实例化对象的_proto_属性:
每一个构造函数都自动有一个原型对象,当通过new来生成一个类(构造函数)
的实例化对象的同时,新创建的对象会从原型对象上继承属性和方法。
原型对象的作用是实现继承。
如何继承?
1、JS在创建对象的时候,都有一个叫做__proto__的内置属性
,用于指向创建它的函数对象(构造函数)的原型对象prototype
2、当我们访问一个对象的属性 时,如果这个对象内部不存在这个属性
,那么他就会去__proto__里找这个属性,这个__proto__又会有自己的__proto__,
于是就这样 一直找下去,也就是我们平时所说的原型链的概念。
3、其实prototype在实现原型链中只是起到了一个辅助作用,而原型链的本质
,其实在于__proto__!
原型链总结:
原型链:每个实例化对象都具有一个原型链指针_proto_,
该指针指向创建它的函数对象的原型对象,而上一层的原型对象的结构依然类似,
有自己的原型链指针,指向创建它的函数对象的原型对象。
这样利用_proto_一直指向Object的原型对象上,
而Object的原型对象用Object._proto_ = null表示原型链的最顶端。
这样由一系列_proto_串起来的原型对象就构成了原型链。
如此便 形成了javascript的原型链继承。
面向对象:
概念:把程序中的关键模块都视为对象,而模块拥有属性及方法
面向对象的三个基本特征(三大特性):封装,继承,多态0
function Dog(){
this.eat = function(food){
}
}
var dog = new Dog();
dog.eat('shi');
构造函数 + 原型模式:
function Blog(name, url, friend) {
this.name = name;
this.url = url;
this.friend = friend;
}
Blog.prototype.alertInfo = function() {
alert(this.name + this.url + this.friend);}
in运算符:判断某个实例是否含有某个属性或方法,不管是不是本地属性或方法("move" in c);
hasOwnProperty()方法:判断一个属性是自身属性,还是从原型链继承的属性(c.hasOwnProperty("name"))