数据类型的分类和判断:
数据,变量, 内存的理解:
对象的理解和使用:
函数的理解和使用:
(function(w, obj){
//实现代码
})(window, obj)
图中所示链接:
测试题1:
测试题2:
测试题1:
测试题2:
测试题3:
测试题4:
测试题1:
测试题2:
测试题1:
测试题2:
原型与原型链:
prototype
: 显式原型属性__proto__
: 隐式原型属性prototype
: 定义函数时被自动赋值, 值默认为{}, 即用为原型对象__proto__
: 在创建实例对象时被自动添加, 并赋值为构造函数的prototype值__proto__
属性, 它指向的就是原型对象__proto__
属性就形成了一个链的结构---->原型链执行上下文与执行上下文栈:
作用域与作用域链:
闭包:
function fn1() {
var a = 2;
function fn2() {
a++;
console.log(a);
}
return fn2;
}
var f = fn1();
f();
f();
f = null; //让内部函数对象成为垃圾对象
内存溢出与内存泄露:
对象的创建模式:
var obj = {};
obj.name = 'Tom'
obj.setName = function(name){this.name=name}
var obj = {
name : 'Tom',
setName : function(name){this.name = name}
}
function Person(name, age) {
this.name = name;
this.age = age;
this.setName = function(name){this.name=name;};
}
new Person('tom', 12);
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.setName = function(name){this.name=name;};
new Person('tom', 12);
继承模式:
function Parent(){}
Parent.prototype.test = function(){};
function Child(){}
Child.prototype = new Parent(); // 子类型的原型指向父类型实例
Child.prototype.constructor = Child
var child = new Child(); //有test()
function Parent(xxx){this.xxx = xxx}
Parent.prototype.test = function(){};
function Child(xxx,yyy){
Parent.call(this, xxx);//借用构造函数 this.Parent(xxx)
}
var child = new Child('a', 'b'); //child.xxx为'a', 但child没有test()
function Parent(xxx){this.xxx = xxx}
Parent.prototype.test = function(){};
function Child(xxx,yyy){
Parent.call(this, xxx);//借用构造函数 this.Parent(xxx)
}
Child.prototype = new Parent(); //得到test()
var child = new Child(); //child.xxx为'a', 也有test()
__proto__
,this.__proto__ = Fn.prototype
【大致意思是这样】后面会知道,定时器延时是因为,定时器相关的回调函数被调用后会进入回调队列,且进入队列后需要先将排在前面的初始化代码及其他的代码执行完后才能再执行该定时器相关的代码(因为JS是单线程的),因此会有延迟,而排在前面的代码及其运行的时间往往是不同的,因此也就造成延迟时间的不同。
例如,网页在有弹出框时,无法再操作网页中的“计算按钮”,如图所示,如果计算时间较长,则用户较长时间内无法对网页进行其他操作,原因是网页界面的更新只能由主线程进行,而JS是单线程的,因此,网页只能等主线程完成计算之后再去更新界面。
下面为具体示例:
未使用H5分线程:
使用H5分线程:
线程与进程:
浏览器内核模块组成:
js线程:
定时器问题:
事件处理机制:
H5 Web Workers:
可以让js在分线程执行
Worker
var worker = new Worker('worker.js');
worker.onMessage = function(event){event.data} : 用来接收另一个线程发送过来的数据的回调
worker.postMessage(data1) : 向另一个线程发送数据
问题:
svn版本控制
svn server
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务