JS视频总结

this

this是在函数执行的时候去获取对应的值,而不是函数定义时.函数里面的this,谁调用函数this就指向谁。
this容易出问题的地方:
定显示器调用的this就指向window,解决办法就是再套一层。
setInterval(function(){
_this.fun();
})
 
<input type='buttom'  onClick="fun()"  />   <script>function fun(){ alert(this); }</script> //此时this指向的window
oDiv.onClick=fun;      //this指向oDiv,函数后不带( )
oDiv.onClick=function(){   this.value="";    fun(); }  //前面的this指向oDiv ,fun()里 的this指向window
 背景不能作为判断条件,颜色不能作为判断条件 

object

object只要不为空就可以添加自定义的属性和自定义方法。
var obj=document;
 obj.onOff=true; //自定义属性

Number()

Number( )可以转字符串、bool值,NULL,一个值的数组可以转换,但是多个值的数组就转不了,不能转函数返回NAN
Number( )、parseInt()、parseFloat()强制类型转换
隐式类型转换:
+      '200'+3   //变成字符串
 - * / %  '200'-3    //变成数字
++ --       变成数字 
><            数字的比较、字符串的比较
!             取反
==  ===        二等判断值 ,三等判断值和类型
NaN :false ;NaN===NaN //false; not a number 不是数字但是数字类型,NaN提示出现了非法运算。
isNaN(): 方法;根据Number( )转换后再进行判断值是不是数字,是数字返回false,不是数字返回true,NaN时返回true  //input里面输入的数据都是字符串不能用typeof来判断,只能用isNaN判断

break和continue

break跳出,结束整个循环 //for(var i=0;i<6;i++){if(i==3){break;}alert(i)} 0 1 2
continue跳过,结束单次循环//for(var i=0;i<6;i++){if(i==3){continue;}alert(i)} 0 1 2 4 5

true和false

false:NaN、空字符串、null、未定义
true:非空字符串、函数、{}、[]

定时器

clearInterval可以清除null,可以清除未定义
 
var timer=setInterval(fun,1000); //执行很多次
clearInterval(timer);
 
var timer setTimeout(fun,1000); //只执行一次
clearTimeout(timer)       

(function(arg){...})(param) 

( function(arg) {...} )(param)相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数
(function($){...}) (jQuery)之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery,用来定义一些需要预先定义好的函数
var fn = function($){....};  //相当于(function($){...}) (jQuery)
fn(jQuery);

总结:
jQuery(function(){ });用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,因 为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。 
(function(){ })(jQuery);用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码 请小心使用。
 
 clientX/clientY: 当一个事件发生的时候,鼠标到页面可视区的距离。
scrollX/ScrollY: 滚动条的高度和宽度
 

Event

 
onmousemove:当鼠标在一个元素上面移动时触发,触发的频率不是像素,还是间隔时间,在一个指定的时间内(很短),如果鼠标的位置和一一次的位置发生了变化,那么就会触发一次。
 时间冒泡:当一个元素接受到一个事件时,会把这个事件传递给它的父级,一至到 window为止。
event.cancelBubble=true; //阻止事件冒泡
function(ev){ev.cancelBubble=true;}
事件捕获:IE浏览器没有事件捕获、
给一个对象的同一个事件绑定多个不同的函数
ie:obj.attacthEvent("事件名称",事件函数)   //1 无捕获,2 this指向window,3 事件执行顺序是倒序
标准:obj.addEventListener("事件名称",事件函数,是否捕获) // 1 有捕获 :false:冒泡  ture:捕获,默认是false,2 this指向该事件的对象,3 事件执行顺序是正序,4事件名称没有on
call :call第一个参数可以改变函数执行过程中的内部this的指向。//fn.call(obj);指向obj
 

面向对象

工厂模式
问题:1.没有new,2.每个对象都有自己的一套函数,浪费资源。
fuction fun(name)
{
  obj =new object();  //原料
   obj.name=name; //加工
   obj.fn= function ()   {  alert(this.name);  }
  return obj; //出厂
}
 
var f1=fun("Jone");
f1.fn();
构造函数
构造函数就是类,构造函数首字母大写
function CreatePerson(name)
{this.name=name; //属性}
//方法
CreatePerson.prototype.showName=function(){alert("this.name);}
 
json构造函数
var per={name:"jone",sec:" 女",shwoName:function(){alert(this.name;}}
per.common{ getByGroup:function(){}}
per.showName():
 
继承
function Person(name,sex)
{this.name=name;
this.sex=sex;
}
function Worker(name,sex, job)
{
//this -new出来的Worker对象
//构造函数伪装
Person.call( this ,name ,sex );  //把父的属性继承过来
}
 Worker.prototype=Person.prototype; //原型链,这个操作Worker会影响到Person,前面修改的后面也会跟着修改 
for(var i in Person.prototype){Worker.prototype[i]=Person.prototype[i];} //换成这种办法可解决
 
instanceof
判断某个对象是否是某个类的实例
 
本地对象 (非静态对象)
Object,  Function, Array, String, Boolean,Number, Date, RegExp ,Error
内置对象(静态对象)
Math,Globle
宿主对象
BOM 、DOM
 
ajax和pjax
 ajax不能改变URL,不利搜索引擎爬取,pjax在改变页面的同时可以改变URL。
 
  !!eles  //加两个!!,如果eles是undefined将转换成false,可以用来判断函数参数是否传入了  
 
 
 
 
 
原文地址:https://www.cnblogs.com/guanguan-/p/7017621.html