分享

js-1

 偶记易方 2018-07-06
一、this的理解
在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是,指向该函数所属的对象
1.全局的this -> 指向的是window
2.对象中的this -> 指向其本身
3.事件中this -> 指向事件对象
二、jquery.extend与jquery.fn.extend的区别
jquery.extend用来扩展jquery对象本身
jquery.fn.extend用来扩展jquery实例
三、闭包
闭包简单而言就是内层作用域可以访问外层作用域的变量,闭包中引用到的包裹函数中定义的变量永远不会被释放,应用到闭包时需要注意及时释放闭包函数(内存泄漏);
四、事件绑定
1.addEventListener;
2.attachEvent(IE低版本)
五、阻止事件冒泡
e.stopPropagation();/* 标准 */
event.cancelBubble=true;/* <=ie9 */
六、阻止默认事件
return false  /   e.preventDefault();
七、原生js操作dom节点
obj.appendChild(); //添加
obj.insertBefore(); //插入
obj.replaceChild(); //替换
obj.removeChild(); //删除
八、undefined的产生
1.变量定义了没有被赋值;
2.想要获取一个对象上不存在的属性或者方法;
3.数组中没有被赋值的元素;(not defined 语法错误)
九、变量声明提升???
//函数声明与变量声明会被js引擎隐式提升到当前作用域的顶部,但是只提升名称不会提升赋值部分
var foo = 1;
a();
function a(){
console.log(foo); //undefined
var foo = 2;
console.log(foo); //2
}
十、js精度不能精确到0.1???
// js精度不能精确到0.1
var n = 0.3,m = 0.2,i = 0.2, j =0.1;
console.log((n-m) == (i-j)); //false
console.log((n-m) == 0.1); //false
console.log((i-j) == 0.1); //true
console.log(n-m); //0.09999999999999998
console.log(i-j); //0.1
十一、bind live delegate
bind:绑定事件,对新添加的事件不起作用,方法用于将一个处理程序附加到每个匹配元素的事件上并返回jQuery对象
live:方法将一个事件处理程序附加到与当前选择器匹配的所有元素(包含现有的或将来添加的)的指定事件上并返回jQuery对象
delegate:方法基于一组特定的根元素将处理程序附加到匹配选择器的所有元素(现有的或将来的)的一个或多个事件上
十二、js函数声明优先于变量声明
// 返回的是函数b(c)而不是变量b(c),不论是先声明的变量还是函数
function b(){}
var b;
console.log(typeof b); //function

var c;
function c(){}   
console.log(typeof c); //function
十三、arguments的操作
function foo(a){
arguments[0]=2;
console.log(a); //2 
// 因为 1. arguments是对实参的访问;
     2. 通过arguments[i]可以修改指定实参的值
}
foo(1);
十四、浏览器渲染模式是标准模式,还是怪异模式
// 标准模式/怪异模式 取决于是否有 <!DOCTYPE html> 声明,没有的是旧版的,有声明的是w3c之后的,为保证原来的页面也可以正常运行,而采用不同的模式
// BackCompat  对应  quirks mode(怪异模式)
// CSS1Compat  对应  strict mode(标准模式)

console.log(window.top.document.compatMode); //CSS1Compat





























    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多