JavaScript乱七八糟的点个人总结
来源:互联网 发布:数据库的垂直拆分 编辑:程序博客网 时间:2024/04/29 20:38
1.caller和callee的区别:caller返回一个函数的引用,这个函数调用了当前的函数;callee放回正在执行的函数本身的引用,它是arguments的一个属性。点击打开链接
2.avascript event对象的clientX,offsetX,screenX,pageX区别:
event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。
event.pageX、event.pageY 类似于event.clientX、event.clientY,但它们使用的是文档坐标而非窗口坐标。
event.offsetX、event.offsetY 鼠标相对于事件源元素(srcElement)的X,Y坐标,
event.screenX、event.screenY 鼠标相对于用户显示器屏幕左上角的X,Y坐标。
点击打开链接
3.待学习
继承:点击打开链接
前端JavaScript规范点击打开链接
4.内存方面 栈 堆
点击打开链接
5.构造函数继承点击打开链接
2)prototype模式:Cat.prototype = new Animal(); Cat.prototype.constructor = Cat; 将Cat的prototype对象指向一个Animal的实例。任何一个prototype对象都有一个constructor属性,指向它的构造函数。我们必须手动纠正,将Cat.prototype对象的constructor值将Animal改为Cat。
3)直接继承prototype(不好):Cat.prototype = Animal.prototype; Cat.prototype.constructor = Cat; 将Cat的prototype对象,然后指向Animal的prototype对象
缺点是 Cat.prototype的修改,都会反映到Animal.prototype,第二行constructor就改掉了
4)利用空对象作为中介:
function extend(Child, Parent) {
var F = function(){};
F.prototype = Parent.prototype;
Child.prototype = new F();
Child.prototype.constructor = Child;
Child.uber = Parent.prototype; // 子对象设一个uber属性,这个属性直接指向父对象的prototype属性
}
extend(Cat,Animal);
5)拷贝继承
function extend2(Child, Parent) {
var p = Parent.prototype;
var c = Child.prototype;
for (var i in p) {
c[i] = p[i];
}
c.uber = p;
}
extend2(Cat, Animal);
6.非构造函数继承点击打开链接
1)function object(o) {
function F() {}
F.prototype = o;
return new F();
}
var Doctor = object(Chinese);
2)浅拷贝(不好)
function extendCopy(p) {
var c = {};
for (var i in p) {
c[i] = p[i];
}
c.uber = p;
return c;
}
3)深拷贝
function deepCopy(p, c) {
var c = c || {};
for (var i in p) {
if (typeof p[i] === 'object') {
c[i] = (p[i].constructor === Array) ? [] : {};
deepCopy(p[i], c[i]);
} else {
c[i] = p[i];
}
}
return c;
}
var Doctor = deepCopy(Chinese);
7.谈谈对this的理解:
this总是指向函数的直接调用者(而非间接调用者);
如果有new关键字,this指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window;attachEvent中this指向问题的解决
点击打开链接
8.js延迟加载
js加载的缺点:加载工具方法没必要阻塞文档,过多js加载会影响页面效率,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作。 有些工具方法需要按需加载,用到再加载,不用不加载。默认正常模式下下,JS是同步加载的,即优先加载JS,只有当JS文件下载完,dom和css才开始加载,当某些时候我们需要JS异步加载,我们可以通过以下方式来设置异步加载,不同情况下选取不同方式即可。
方法点击打开链接
9.编写高性能Javascript代码的N条建议点击打开链接
10.内存泄漏点击打开链接
- JavaScript乱七八糟的点个人总结
- html/css乱七八糟的点个人总结
- 聊点乱七八糟的
- 乱七八糟的自我总结
- AJAX的点个人总结
- C++ 引用 乱七八糟的总结
- 乱七八糟的总结(一)
- solr乱七八糟总结,真的很乱
- 关于JavaScript知识的个人总结
- 乱七八糟写点Markdown
- 乱七八糟的
- JavaScript个人总结
- 个人总结JavaScript笔记
- JavaScript个人学习总结
- javascript知识点个人总结。
- 个人学习php的一些注意点的总结
- javascript函数的几点总结
- 个人工作技术点总结
- React-Native-TabNavigato
- PAT-B] 1001. 害死人不偿命的(3n+1)猜想 [模拟]
- leetcode解题之200. Number of Islands Java版(岛屿的数量)
- POJ
- LeetCode算法题目: Valid Number
- JavaScript乱七八糟的点个人总结
- 刀片机与小型机
- css中元素的隐藏方式
- 算法训练 判定数字
- 解析301与302重定向之间的区别
- IOS
- 离婚的理由(改编)
- javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
- 剑指offer--两个栈实现一个队列