js_高级教程详细内容个人总结

1,数组的常用操作

push()方法可向数组的末尾添加一个或者多个元素,并返回新数组的长度,

unshift() 方法可向数组的开头添加一个或更多元素,并返回新数组的长度。

Var arr = [1,2,3]  arr.push(4,5,6);  arr.unshift(-1,0,);

pop() 方法删除数组的最后一个元素,并且返回被删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。 arr.pop();
shift() 方法用于把数组的第一个元素删除,并返回被删除的元素的值。如果数组是空的,那么 shift() 方法不进行任何操作,返回 undefined 值。
concat() 连接数组,组成新数组   arr.concat(4,5,6);    创建新数组
该方法用于在一个数组后连接另一个或多个数组。它不会改变现有的数组,返回的是连接后的新数组。
concat()方法可以接受值,也可以接受数组作为参数。 Var array1=[] ;  var array2,arry3
array1.concat(array2,array3,...);
Number(); 把对象的值转换为数值

join()  将数组各个元素是通过指定的分隔符进行连接成为一个字符串。arr.join(“-”);  “1-2-3”
split() 方法用于把一个字符串分割成字符串数组,必需指定要使用的分隔符。
如果分隔符为空字符串 (“”) ,string中的每个字符都会被分割 var str = “hello-world”
str.split(“-” );    
可指定howmany参数,该参数为数值,指定返回的数组的最大长度。
sort()  对数组进行排序,返回排序后的数组对象。可接受参数,必须是函数。
Var arr = [“b”,”a”,”d”] arr.sort(mysort);      function mysort(a, b){return  a-b}
splice() 用于插入、删除或替换数组的元素。 
首先,必须指定index,即从何处插入/删除元素。该参数为数值,为元素的下标。
其次,必须指定要删除的元素的个数,可以是0。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
如果要插入元素,可将新元素作为参数写在括号内,新元素之间用 , 隔开。 arr= [1,2,3,4]
arr.splice(2,2,”5”,”6”)

2.DOM节点的操作

<div id=“div1”>   
Var mydiv = document.getElementById(“div1”);
父节点: mydiv.parentNode;   
相邻: mydiv.nextSibling;   mydiv.previousSibling
子节点: mydiv.childNodes();     firstChild()  lastChild()
document.getElementById
doucument.getElementsByName
document.getElementsByTagName(“li”)
document.getElementsByClassName

createElement(“”)     创建节点:返回一个元素对象
cloneNode(false)           克隆节点,接受一个参数deep,值为true或false。

子节点操作:
appendChild()       向节点添加最后一个子节点
mydiv.appendChild(“p”);

insertBefore()        在指定的已有子节点之前插入新的子节点。
如果未指定已有子节点,会在结尾插 入 newnode。
removeChild()        移除指定子节点

属性操作:
div.getAttribute(“id”)
setAttribute(“id”,”mydiv”)
removeAttribute(“id”)

3.Data()类型

获取日期和时间  var mydate = new Date(“2016/8/20  00:00:00”);
getDate()                     获取日 1-31
getDay ()                     获取星期 0-6      
getMonth ()                 获取月  0-11
getFullYear ()             获取完整年份(浏览器都支持)
getHours ()              获取小时 0-23
getMinutes ()               获取分钟 0-59
getSeconds ()                获取秒  0-59
getMilliseconds ()             获取当前的毫秒 
getTime ()               返回累计毫秒数(从1970/1/1午夜)
setInterval()    
setTimeout()   


4.string类型

回答下列每个函数的用法: var  str =“hello world”
indexOf(“l”); 根据字符返回位置
subStr(0, 2) 第一个参数是截取开始的位置, 第二个参数是截取的长度
subString(0,2) 第一个参数是截取开始的位置,第二个参数是结束位置
charAt (3) 根据位置返回字符
split
join 合并字符串  
slice 截取字符串  
toLowerCase
toUpperCase

5.offset与client

offsetWidth    offsetHeight
得到元素对象包括边框在内的宽度和高度
offsetWidth =  width  + border  +  padding   
div {  width:220px;  border-left:2px solid red; padding:10px;}
div.offsetWidth =  220 + 2 + 20     


clientWidth clientHeight
得到元素对象边框以内的宽度和高度,不包括边框


注意:offsetWidth,clientWidth 与 div.style.width 的区别  

offsetLeft  offsetTop    
返回对象与上级元素(最近的带有定位的父级元素)左边或上面的距离
如果父级都没有定位则以body 为准
距离从父级元素的外边距开始算。

offsetTop 与 style.top 的区别
一、最大区别在于  offsetLeft 、offsetTop 可以返回没有定位的元素距离左侧的位置。 而 style.left、style.top 不可以。只有定位的元素才有 left  top right  


二、offsetTop 返回的是数字,而 style.top 返回的是字符串,除了数字外还带有单位:px。
 style.left = 300px     
 
三、offsetTop 只能返回,不能设置,而 style.top 可设置也可返回。


四、如果没有给 HTML 元素指定过 top 样式,则 style.top 返回的是空字符串。


五、style.left、style.top 只能得到行内样式。


6.event 事件属性

我们学过一些事件 :   onmouseover   onmouseout.....作用于元素本身以及其子元素
onmouseenter   onmouseleave 只作用于元素本身
onmousedown   onmouseup  onclick 
例:btn.onclick = function(event) {  语句 }


event  就是事件的本身。    
在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息。所有浏览器都支持event对象,但支持的方式不同。
比如鼠标操作时候,会添加鼠标位置的相关信息到事件对象中。
普通浏览器支持 event  
ie 678 支持 window.event
所以我们 采取兼容性的写法 :
  var event = event || window.event;  

7.scoll事件

onscroll 事件在元素滚动条在滚动时触发
 
window.onscroll = function() {   }


scrollTop 网页被卷去的高度。
谷歌浏览器 和没有声明 DTD  <DOCTYPE> :  
  document.body.scrollTop;  
火狐 和其他浏览器   
  document.documentElement.scrollTop;
 ie9+  和 最新浏览器 
  window.pageXOffset;     pageYOffset  (scrollTop)
 兼容性写法:  
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;

scrollTo(x,y)  
window.scrollTo(15,15); 
方法可把内容滚动到指定的坐标。
格式:
scrollTo(xpos,ypos)
xpos 必需。要在窗口文档显示区左上角显示的文档的 x 坐标。
ypos必需。要在窗口文档显示区左上角显示的文档的 y 坐标
因为我们的网页大部分都没有水平滚动条,所以,这个x 不太常用。

9.冒泡问题

事件冒泡: 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。
顺序
IE 6.0: 
div -> body -> html -> document
其他浏览器: 
div -> body -> html -> document -> window


不是所有的事件都能冒泡。以下事件不冒泡:blur、focus、load、unload

阻止冒泡的方法
 标准浏览器 和  ie浏览器  
 w3c的方法是event.stopPropagation()       
 IE则是使用event.cancelBubble = true       bubble   冒泡  泡泡       cancel 取消 
 兼容的写法: 
 if(event && event.stopPropagation)
        {
             event.stopPropagation();  //  w3c 标准
        }
          else
          {
              event.cancelBubble = true;  // ie 678  ie浏览器
8   }

9.闭包

用一个函数 去访问 另外一个函数内部定义的局部变量的方式就是闭包。
内部变量是局部变量
局部变量只能在函数作用域的内部使用。


闭包的特点: 
优点:不产生全局变量,实现属性私有化。
缺点:闭包中的数据会常驻内存,在不用的时候要删掉否则会导致内存溢出。

 function outerFun(){
   var a=0;
      function innerFun(){
        a++;
       alert(a);
       }
 return innerFun;  
  }
 var obj=outerFun();
  obj(); 1  obj();  2
var obj2=outerFun();
  obj2(); 1 obj2(); 2
结果是:1,2,1,2

10.面向对象

面向对象:通过类可以创建多个具有相同属性和方法的对象。


面向对象有两种,基于类的(class-based)面向对象和 基于原型的 (prototype-based) 面向对象


在基于类的面向对象方式中,对象(object)依靠 类(class)来产生。
而在基于原型的面向对象方式中,对象(object)则是依靠 构造器(constructor)利用 原型(prototype)构造出来的。




ECMAScript中没有类的概念。ECMAScript中的对象是基于原型的面向对象方式。

面向对象的特性
  1. 抽象
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。
  2. 封装
   封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面
  3. 继承
  4. 多态
多态是指两个或多个属于不同类的对象,对于同一个消息(方法调用)作出不同响应的方式

new  
利用new 关键字 去声明新的对象 
  


new运算符的作用是创建一个对象实例。这个对象可以是用户自定义的,也可以是带构造函数的一些系统自带的对象。
new 关键字可以让 this  指向新的对象 


所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。

Object构造函数或对象字面量都可以创建单个对象,使用同一接口创建对象,会产生大量重复代码。


工厂模式:可创建多个对象,不能解决对象识别问题。
构造函数模式:
原型模式:

prototype    原型属性 
主要解决:函数因为使用非常非常多,重复执行效率太低。
Person.prototype.showName = function() {  // 用的共同的父亲
    alert("我的名字是"+ this.name);
}




写法:
类.prototype.方法  = function() {}  具体格式 
可以把那些不变的属性和方法,直接定义在prototype对象上

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值