函数

代码的复用:写一遍多次使用》把特定的功能语句打包放在一起

语法:function 名字(0,1,1多个参数){

执行的语句 }

返回值return,把语句返回给函数

例子:

function add(x,y){
var z=x+y;
return z;
} var rs=add(,);
console.log(“+=”+rs);

动态参数

function add(){
var z=0;
for(var i=0;i<arguments.length;i++){
z + = arguments[i];} return z
}
var rs=add (1,2,4,5,23);
console.log("1+2 4,5,23= "rs); rs=add(3,4);
console.log("3+4= "+rs);

作用域:可访问变量的集合(对象、函数)

我们定义了一个变量,这个变量可以被使用的地府,可以使用的范围

var a=10;

全局作用域>全局变量>在函数外定义的变量>在所有地方都能被访问

局部作用域>局部变量>在函数里面的变量>函数里面被访问到

function add(){
y=100;//不设置var y=100的局部变量只设定y=100的时候 系统自动默认全
局变量
console.log("add():y="+y);
} add();
console.log("全局y="+y);

预解析:浏览器在获得JS文件的时候,不是立刻去执行代码,全篇快速扫描一遍

把变量预先解析

变量  把变量的声明提前  例如

console.log("x= "+x);
var x=10;
add();//函数也是变量
function add(){
console.log("add()");}
顺序不同也可以正常显示

但是如果在函数内部的全局变量加载顺序在console.log后面 会报错。所以注意顺序

闭包:变量的 私有化问题

<script type="text/javascript">//简化写法 函数声明和立即执行放在一起。

        var plus=(function() {
var counter = 0; return function () {
counter++;
console.log("counter=" + counter);
} })( );
plus();
plus();
plus();
console.log(counter);

对象

变量var

函数function:一对语句的集合

对象:一对变量+一堆函数的集合

var  boj1={X:0,y:1,z:function(){console.log(“”“”);}}}

属性:  名字:   值。

名字:string:    隐式转化为string

x123-> 可以不加引号

如果包含了特殊字符->必须加引号 例如“first name”:“cc”

如果函数构造大体相同还可以创建类

例如var person2=new person();

对象:属性的基本操作: 增加  删除  修改属性值  查询获取属性的值  遍历;

查询获取属性的   点. []   例子

var name = person1.name;->“xiaoming”只能用没有双引号的名称

name=person["name"];

name="xiaoming"

修改

person1["name"]="xiaoming2";

person1.name="xiaoming2";

增加:修改属性的时候,如果对象里面没有这条属性,自动加上

person1.height=170;

删除

delete person1.name

遍历:

for(var 属性名 in person1){

console.log("名"+pN);}

引用、自定义类

//定义了对象

//var person1 = {

      name:"xiaoming",

      sex:"male",

      age:"19",

      slogen:function(){

      console.log("w s x m");}}

//xiaohong 对象 人
//用类的形式创建对象
//人的类:class
// var person2=new PersonClass();
//ES5 是 function -》ES6更新成class F需要加() C不需要加()
//为了区分函数和类 类
function PersonClass(pName,pSex,pAge){
this.name="pName";
this.sex="pSex";
this.age="pAge"
this.slogan=function(){
console.log("w s"+this.name);}
}
//构造函数方式
var person1=new PersonClass("xiaoming","male","18");
var person2=new PersonClass("xiaohong","femle","15");

命名空间:多个人命名自己的创建的变量

var cc={};    cc.Age=100; cc可以是dd可以是ee,自己创建的

系统提供很多类->用的方法

//对象  类   自定义类

//对象和类

//对象var obj1={}    //var obj2=new Object();//空的对象 这两个创建的是同样的空对象

对象:值+方法

Object->打包  最底层  类

值     万物都是对象+值+方法:类型转换

数字123 ->对象   类型   Number

字符串“abc”      String

布尔值true   false  Boolean

转换例子:  var n1=123;var str1=n1.toString();更多的自己查属性词典

//时间相关;Date()

//计算代码的性能:耗时

var time1=new Date();//获取了当前的时间 本地电脑的时间

for(var i=0;<1000000;i++){

t++;}

var time2=new Date();

var n=time2.getTime()-time1.getTime();

*****Math  -》 数学相关 Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(),像 Math.sin() 这样的函数只是函数,不是某个对象的方法。您无需创建它,通过把 Math 作为对象使用就可以调用其所有属性和方法。

随机数

Math.random()

DOM弹窗(浏览器的弹窗)

同步:阻断

alert()弹窗直接弹出

confirm()boolean类型弹窗,确定为ture 取消为false 例子如下

//var bcf=confirm(“confirm弹窗”);

//console.log("点击:"+baf)

//if(bcf){提交}else

prompt()

//var strpt=prompt(“prompt 输入:”,“默认是CC”);

console.log(“填了:”+strpt);

浏览器的导航栏的信息

//window.location 对象

//属性:url的各个部分

//location.href;

//location.toString()

//刷新页面,打开新的页面 例子:

//var bcf=confirm("confirm弹窗");

//if(bcf){location.replace(“http://www.baidu.com/”)}

//else location.reload();

浏览器的历史记录:前进 后退

history

浏览器的信息:版本 厂家

navigator

//计时器

循环执行:var sil=setInterval(函数名,时间);意识是每隔多少时间执行一次函数

停掉:clearInterval(sil);

一次执行:var sil=setTimeout(函数名,时间);

clearTimeout(sil);

例子  var   num=0;

function add(){

console.log("num="+ ++num);}

var sil = setInterval(add,1000);

function end(){

console.log("setTimeout  clearInterval");

clearInterval(sil);}

setTimeout(end,10000);

Dom  - > 文档对象模型

Dom树:

html文件 -》 人 - 》网页的数据

浏览器 -》 数据结构 - 》方便 查找 修改 遍历

样子 - 》 树

DOM树

数据结构:

线性:单链表  循环列表  队列  栈  数组

树形: 二叉树  平衡树  红黑树

网状:有向图 无向图   - 》寻路算法  A*算法

DOM树

document 节点:只有一个

标签节点 元素节点:

文本节点:

标签节点 元素节点: 样子 样式

找到这些节点

3中最常用的方法:

1通过ID来查找

2通过标签名来查找

3通过class来查找

//  ID-》唯一性:

var  p1  = document.getElementById("p1");

// JS时间线

var  ps     =      document.getElementsByTagName("p1");//返回数组

var  p1     =      ps[ 0 ];节点

var ps = documentgetElementsByClassName("txt");//返回数组

ps【0】节点

******三个方法的区别:

1 ID -》节点

Tag(标签)Class  -》数组

1.1   id-》document.getElementById只能用document来获取

Tag   Class-》在标签任意节点上使用

创建节点,添加到DOM树  删除节点

var div1   =      document.getElementsByTagName("div1");

//创建一个标签

var p1   =      document.createElement("p");创建标签类节点

//创建一个文本节点

var ptxt = document.creatTextNode("p1");创建文本类节点

p.appendChild(p1txt);需要添加的节点

//添加节点

div1.appenChild(p);父节点

//删除节点

removeChild();

例子删除div2

var div2 = document.getElementById("div2");

div1.removeChild(div2);

同样也可以用父节点元素进行删除操作

div2.parentNode.removeChild(div2);

对节点的属性 内容

html定义好的属性    用点   .    对象的点  获取  修改

var img1 = document.getElementById("img1");

img1.id 通过获取img1  可以进行加. 进行修改

//class   因为在JS中是关键词    类  所以要用className地台

//img1.className=

//CSS样式的修改 在style后面可以加·在加属性进行修改

例如:img1.style.width=“100px”

//获取属性  修改自己创建的例如ID属性

img1.getAttribute("dat");

getAttribute()

ing1.setAttribute("dat(属性的名字)","1(属性的值)")

常用的操作属性:

getAttribute("")    setAttribute("")    removeAttribute("")

更改节点中文字或者其他 例如<p id="p1">  p1  </p>中的p1文字   里面可以添加任何东西 也可以加超文本链接等等

var p1 = document.getElementById("p1");

p1.inner(ID=P1标签内的所有内容)HTML(代表格式) = "这是innerHTML";

如果想单纯添加文字内容用   textContent

什么是事件:

JS-》交互  人可以去操作界面

js -》 事件驱动的方式

用户-》操作html元素-》产生一个事件-》事件 主动的调用 设定 方法 函数

事件源:产生事件的地方

事件的类型:点击 键盘

事件对象:记录好 信息

事件的处理程序:函数

两种方式:

1 html的属性:

属性名:on+时间的名字 onclick

属性值:方法

直接在html设定

通过js的元素对象来设定

点击事件例子:

var num =0;

function add(){

console.log("点击:"+  ++num);}

var div1 = docume.getelemengtById(“div1”);

div1.onclick=add;

也可以删除 div1.onclick=null;

2 通过调用 系统提供的方法

div1.addEventlistener(事件类型click,函数add,事件的处理方式可以不屑类型是布尔类型)

//事件函数:发生的时候-》操作 function

var div1 = document.getElementById("div1");

div1.addEventlistener("click",add);

事件对象 event:提供了事件的详细信息;

具体发生事件的元素,鼠标的位置,点击的状态,键盘的按键

function add(event){

console.log("事件函数");}

// var e = event || window.event; // IE8采用的方法

console.log(event);

//想要取消默认打开的超链接页面

event.preventDefault(); 用对象方法时用这个

//return false;用on来绑定事件函数的时候 用这个

}

var a1=document.getElementById("a1");

a1.addEventListener(“click”,add);

//用绑定方法也可以替代上两行代码。取消默认方法时return false;

a1.onclick=add;

上述js代码相对应的Html代码是
<body>
<div id = "div1">div1</div>
<input type="text" name="a" id="input1">
<script src="19.js"></script>
<a herf="http:www.baidu.com" target="_blank" id="a1">
百度</a>
</body>

事件的传播:

多个标签,相互嵌套的,点击页面的时候,点击事件

是不是被点中的标签才会发生点击时间(在html文件中 div2的父元素是div1)

var div1 = document getElementById("div1");

var div1 = document getElementById("div2");

div1.addEventListener("click",div1click);

div1.addEventListener("click",div2click);

function div1Click(){console.log(“div1  click”)};

function div1Click(){console.log(“div2  click”)};

事件的传播:

在默认的情况下,点击页面的一个标签,处在传播路径上的标签都会监听到对应的事件

传播路径:就是dom树的分层结构图。结构下的都可以获取到

事件流:对应标签接受到事件的顺序

两大阶段:

捕获阶段:从起始点》目标阶段

冒泡阶段:目标位置》起始位置

例如head1.addEventListener(“click”,head1Click,事件的传播,false or true)

false》head1Click  对应的函数会在冒泡阶段执行

ture》 head1Click  对应的函数会在捕获阶段执行

H5文件
<head><style>
#div1{ width:200px;height:200px;background:green;}
#div2{margin-left:200px; width:100px;height:100px;background:red;}</style></head>
<body>
<div id="div1">div1<div id="div2">div2</div></div>
<script src="20.js"></script>
<ul>
<li>li1</li>
<li>li2</li>
<li>li3</li>
<li>li4</li>
<li>li5</li>
</ul>
</body> JS文件
var div1 = document getElementById("div1"); var div1 = document getElementById("div2"); //捕获阶段
div1.addEventListener("click",div1clicktrue,true); div1.addEventListener("click",div2clicktrue,true); function div1Clicktrue(){console.log(“捕获阶段 div1 click”)}; function div1Clicktrue(){console.log(“捕获阶段 div2 click”)};
//冒泡阶段
var div1 = document getElementById("div1"); var div1 = document getElementById("div2"); div1.addEventListener("click",div1click,false); div1.addEventListener("click",div2click,false); function div1Click(){console.log(“冒泡阶段 div1 click”)}; function div1Click(){console.log(“冒泡阶段 div2 click”)}; //冒泡阶段事件代理利用冒泡流程机制
var ul1=document.getElementsByTagName("ul")[];
ul1.addEventListener("click",ulClick);
function ulClick(event){
console.log(event.target);}

JavaSpcript基础的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. mac常用操作

    Command+Shift+. 可以显示隐藏文件.文件夹 touch a.txt 新建txt文件

  2. PAT 1140 Look-and-say Sequence

    1140 Look-and-say Sequence (20 分)   Look-and-say sequence is a sequence of integers as the following ...

  3. STL 小白学习(10) map

    map的构造函数 map<int, string> mapS; 数据的插入:用insert函数插入pair数据,下面举例说明 mapStudent.insert(pair<, &qu ...

  4. C# Winform 通过Socket实现客户端和服务端TCP通信

    操作界面如下: 1.声明Socket 第一个参数:寻址方式,第二个参数:传输数据的方式,第三个参数:通信协议 Socket socket = new Socket(AddressFamily.Inte ...

  5. Java之for循环嵌套练习

    1.打印4层*** ***** ***** ***** ***** class forfor{ public static void main(String[] args){ for(int y=0; ...

  6. [数]昨天欠下的一道立体几何题HDU-4741

    并没有做到这道题,后来听学长说了题意,总之就是立体几何嗯 看了好几份题解,是的我知道是异面线段的距离了,可是看码完全不明orz. 这时候出现了一份清晰易懂甚至给出了公式来源的blog╰(*°▽°*)╯ ...

  7. BPM与OA区别

    核心差异: OA解决的是流程有无问题 BPM解决的是流程更好更优的问题 主要差异如下: 1.BPM有更好的广度跟深度 这里的广度是指应用场景的广度. BPM一般都会以端到端的方式衔接企业运营过程的上下 ...

  8. Shadow Properties之美(一)【Microsoft Entity Framework Core随笔】

    最近在做公司的项目的时候,开始把部分程序迁移到EF Core,然后有了一些感触,趁着还没忘却,还是先记录下来. EF Core还在成长中,我写这个的时候,版本是2.2.如果对着已有的EF 5/6来说, ...

  9. PYTHON实现算术表达式构造二叉树

    LEETCOCE 224. Basic Calculator Implement a basic calculator to evaluate a simple expression string. ...

  10. lintcode中等题目的四道题

    第一题: 第一句先创建了一个解决问题的类, 第二句声明了一个公共接口的整形链表里面有N个整形数, 第三句给链表动态初始化, 第四步判断链表里的数有没有,如果N<=0则返回结果0,否则执行Prin ...