您的位置:首页

小知识温习重点摘要

2018-03-07 14:49 106 查看
1、事件委托delegate()方法及 this == id 不兼容 IE 的问题:
(1)delegate用法:$(selector).delegate(childSelector子元素,event事件,data传递参数,function执行函数)
(2)this === id名,id名是不能加引号的,不兼容IE
(3)兼容IE,this.id === "id名"

2、引用传参的问题
实例的理解
(1)引用类型在传参的时候,是按照引用传递的
(2)即使在函数内部修改了参数的值,原始的引用依然不变。(实例中,在重写obj的时候,这个变量的引用已经是一个局部变量了,注意这个局部变量。只是在这儿函数运行完,这个对象被销毁了)

3、IIFE的注意事项
(1)IIFE立即执行有多立即:变量、函数都有声明提升的过程,但是函数表达式其实是分为先声明、后赋值这2步。如果函数表达式后面存在立即执行函数IIFE,这个IIFE的立即执行速度会快到函数表达式a执行完第一步骤函数声明之后,IIFE就会立即执行,而此时a未被赋值,是undefined,所以执行a()时会报错。

4、获取多级iframe里元素的问题,contentWindow的使用

5、js操作时间:
(1)new Date()获取人类时间,或把机器时间转成人类时间
(2)Date.parse()把人类时间转成机器时间

6、函数内部属性arguments
(1)arguments 是一个类数组对象,包含着传入函数中的所有参数,主要用途是保存函数参数
(2)arguments对象有一个 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数,可以使用arguments.callee()来代替函数

7、js函数中的默认参数
(1)默认情况下,js函数的所有参数都是未定义的,所以比如函数里面获取数组,但是参数没有数据传入,就会报错
(2)默认参数允许你设置不同的默认值,要使用默认参数,只需传递 (parameter = defaultValue)即可。当没有参数传递的时候,参数默认值就是defaultValue
(3)最重要的是如果我们提供一个参数,它将覆盖默认值。单个函数中可以拥有多个默认参数。
(4)不用es6语法的默认参数写法:var paramter = paramter || defaultValue;(当参数为false时重新赋值defaultValue)

8、this重定向:
(1)var that=null;//定义一个空对象用于承载this
(2)that = this;//给that赋值this

9、关于for循环的一个注意点:
(1)循环继续的判断依据是以分号前的最后一项为准,不会管其他前面的项是否满足条件。比如:for(j=0,i=0;j<6,i<10;j++,i++),最后一次循环是:j=9,i=9
(2)同时还需要注意最后项的起始计算条件,比如:for(var j=0,i=0,a=1;j<10,i<6,a<14;j++,i++,a++),最后一次循环是:a=13,j=12,i=12

10、删除元素绑定的事件:
(1)css方法:pointer-events:none
(2)jQuery方法:unbind()删除一个或多个事件,用空格分割多个事件;如果没有参数,则删除所有绑定事件
(3)去除属性的模式:
obj.attr("onclick",""),是onclick的值为空
$("#id").removeAttr("onclick"),去掉标签中的onclick事件

11、textarea在浏览器中固定大小和禁止拖动
(1)resize:none,both,vertical,horizontal,inherit(设置为继承的话一般也是不可以拖动的,因为其父级一般是div元素)
(2)只是固定大小,拖动图标仍在:width/height:200px;max-width/max-height:200px;

12、判断元素是否含有指定的类
(1)is(".className")
(2)has("className")

13、关于设置opacity:
(1)存在问题:子级一定会继承父级的透明度,哪怕给子级设置opacity为1也不行。因为设置了opacity的父元素,此属性一定会被子元素继承。如果父元素定义了opacity,子元素再定义一个opacity,那么子元素的opacity效果其实是两者的乘积。
(2)解决方式:
一种:取消父子关系,然后子级用定位的方式覆盖到父级上
二种:使用rgba颜色模式:注意是 background: rgba(0,0,0,.3); 而不是background-color;

14、控制radio只读不可修改的方式
(1)设置disabled,则选择的值无法传入后台,这是一个问题
(2)解决方法:让没有选中的radio设置disabled不可以修改,那么选中的radio值还可以传入后台进行操作

(3)onclick="return false;"

15、css注意问题:
(1)font-size: 0;因为子元素inline-block之间可能有空格,需要去除默认的宽度
(2)如果采用float的话,元素会变成block元素,vertical-align会不起作用,所以采用vertical-align:middle的话,需要把display:inline-block
(3)css样式文字本身的大小不兼容解决方案:给文字设定 line-height ,确保所有文字都有默认的 line-height 值,才能确保在不同浏览器下字体所占高度是一致的
(4)hover 选择器可用于所有元素,不只是链接。在 CSS 定义中,:hover 必须位于 :link 和 :visited 之后(如果存在的话),这样样式才能生效。

16、带命名空间的事件:
(1)on事件,可以把事件绑定到某个行为,并且可以通过选择器(selector)过滤元素
(2)如果使用$("a").off("click")就却会把两个handler都移除掉
(3)如果只移除其中一个hander事件,如何做呢?
使用带命名空间的事件:$('a').on('click.namespace1','a.external', function() {});
通过命名空间删除指定的事件:$('a').off('click.namespace2');

17、检测变量是String类型
(1)String类型的两种生成方式:
直接声明赋值:var str = "abc";
通过构造函数生成方式typeof值是object:var str = new String("abc");//此种情况的 typeof str为“object”
(2)判断方法:typeof str === "string" || str.constructor === String
(3)关于new Number()和 new Boolean()的 typeof 的值均为 object

18、position:fixed居中的问题
(1)position设置为fixed时,margin:0px auto;会出现失效问题,盒子并不会居中。这是因为fixed会导致盒子脱离正常文档流
(2)解决方法:
增加right和left:#name{position:fixed;margin:0px auto;right:0px;left:0px;}
上下左右居中:#name{position:fixed;margin:auto;right:0;left:0;top:0;bottom:0;};注意上下居中时是margin:auto

19、盒模型:
(1)2种盒模型:border-box和content-box
(2)消除border宽度对布局的影响:
  用outline代替border
  设置属性box-sizing:border-box; 不影响盒子宽高,只是内容区会变小
(3)box-sizing的三个属性:content-box、border-box、inherit

20、具名函数表达式:var fn1 = function test(){}

  具名函数表达式的函数名只能在函数内部使用,在外部访问不到。也就是说具名函数表达式在外部只能用函数表达式的变量 fn1 访问,而test的命名只能在创建的函数内部使用。

21、换行符在html中不显示换行?

  解决方案:设置white-space:pre

  pre标签中word-wrap:break-word不起作用?white-space:pre-line或者white-space:pre-wrap

22、快速跳出多重循环?

  解决方案:定义跳出标记

23、判断数组对象中是否包含某个对象,判断2个对象是否相等

  技巧:利用JSON.stringify():JSON.stringify(arr).indexOf(JSON.stringify(json1))

  二种:就是匹配和被匹配存在赋值关系。如何解?

var json2 = arr[0];
var json3 = {name:'zhangsan'};
console.log('json2',arr.indexOf(json2));  // 存在
console.log('json3',arr.indexOf(json3)); //不存在
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: