Js基本语法(个人笔记参考)

Js基本语法

Defer 推迟,解析页面完才加载脚本文件

Async 新线程,异步执行脚本文件同时加载画面

异常:Try{代码段}  catch(e){ e.message } finally{总能执行} (js可省略finally,无须使用多个catch)

自定义异常,系统异常

Var 变量提升机制,提升到该函数体之上,只是声明不是赋值

Let 好处,

1.有块作用域

2.全局变量不添加window对象属性

3.不会提前加载

递归函数:自己调用自己(函数本身)

局部变量:var定义的变量,函数内使用,使用完销毁,不占任何内存

全局变量,函数外定义,不使用var定义的变量

Typeof()和Instanceof的区别

数组的foreach ( 遍历数组 ) 和map (创建一个新的new_array )

With 避免重复输入对象

With(document){

       Writeln(“ 123 ”);

Writeln(“ 123 ”);   

Writeln(“ 123 ”);

}

1. 分支语句 if、switch

2. 循环语句

for

while

do while

for in  (遍历数组所有元素、对象的所有属性)

continue

break

函数定义 function

三种方式

1.常规

Function functionName(parameter-list){}

2.匿名函数

就是不给它函数名,定义一个函数对象赋给一个变量

Var f = fun(){}

3.类匿名函数

Var f = new fun(); 接受一系列参数,最后一个参数是函数的执行体。

Js函数

1.被调用 (java一样正常被调用)fun( 参数 );

2.对象 (创建一个对象,该对象是Function实例)var k = {  w: fun() }  k.w

3.方法 (附加给一个对象,作为它的方法)类的方法 window.fun()

4.变量 (得到一个变量)会覆盖(不能变量和函数(内置函数)同名)

5.类 (同名类)

直接调用 var t = fun test() 1  原来test() 不存在,t(“ ”);    没有任何返回值

类的构造器 var t = new fun()  t instanceof object        总有一个返回对象

定义p函数(类的定义)5

fun p(name,age){ this.name = name; p.age = age; this.info = function{} ;  }

//this.name/age/info   都是p类的属性和方法

实例化对象 var a = new p (“小米”,12);

注意:类属性访问 p.info 和 对象访问 a.info不一样的

Js 动态语言,和java不一样,能给对象添加新属性和方法

函数调用三种方式

3种方式

1.直接调用 ( 通过附加对象作为调用者,传入所需要的参数)

2. call()( 动态调用)

调用者.(参数1,参数2) = 函数. call( 调用者,参数1,参数2)

例子:

each(array , fn ){  for(var index in array) { fn.call(null , index , array[index])       } }

fn.call()传给fn函数参数

each( [1,2,3] , fn(index,ele){  document.write(“” + index  + “” + ele)        });

3.apply()  ( 动态调用函数 )

函数引用.apply( 调用者, [ 参数1,参数2 … ])

= 函数引用.call(调用者, 参数1,参数2 …)

例子:

Var mf = fun(a,b){  alert(“” + a “”  +  b )};

Var example = fun(num1,num2){ mf.apply(this , argument) }  argument表示传入的所有参数

Example(20,40);

函数独立性(调用者的属性和方法 )

匿名内嵌函数方法定义类的 内嵌函数 也是独立的(别人可以通过call来调用)

也可以用 dog.info.call( 调用者cat(其他类或者window) )调用

函数提升:js允许(普通函数、局部函数)函数提升到<script../>元素、函数内顶部(var和变量提升一样)

匿名函数(匿名局部函数)不行(只提升变量)

函数名不使用var、let 则它的变量是全局变量(函数也就是全局可用的函数)

尽量避免变量定义和函数重名

定义变量不赋值,函数优先级高于变量,输出函数

定义变量赋值,函数优先级低于变量,输出变量 (函数被覆盖)

箭头函数 ( 相当于 其他语言的Lambda表达式 或 闭包语法 )

简化:

Function不要 ,  用->箭头表示

注意:参数、语句只有一个时,不需要括号、花括号。

如果函数不需要形参,不能省略。

一条Return语句,也可以省略。

箭头函数不拥有自己的this。

普通函数而言,用new fun() 创建一个对象,this表示就是这个对象

直接调用普通函数,this代码的是window

定义箭头函数,this代表的是上下文的。

例如在全局范围定义就是window本身

注意:箭头函数

1. 返回一个对象是 =>( { name : “  ” } );

2. =>前不能换行

3. 解析顺序的问题  有必要加个括号()

函数参数处理 (和Java类似)

1. 基本类型 和 复合类型(对象,数组) 都是值传递

2. 空参数:自动传入undefined ;没有重载,相同名字会覆盖前面的函数

3. 参数类型 “鸭子类型“

先判断 类是不是对象,传入的类属性是什么类型符不符合类的属性类型。

闭包:函数里面的函数,使局部变量扩展到函数之外的地方去

prototype属性: p. prototype.walk()  原来那个没有walk()的方法不存在了,伪继承

内建类的扩展

Array. Prototype.index0f = function(obj) { … }

arr[].indexoff( obj )

子类的原型可设父类的实例,来实现继承父类的方法

student. Prototype = new person(“ ”, );

student Instanceof person/ student

构造器实现伪继承

this.inherit_temp = person

this.inherit_temp( name,age );

call实现伪继承

person.call( student , 参数1,参数2)

apply实现伪继承

person.apply( student, [ 参数1,参数2 ] )

new创建构造器来创建对象

new Object() 来创建对象,可以随时添加属性和方法

new function()添加方法

DOM 文档对象模型(W3C组织倡导)

功能:访问,增,删,改 结构化文档,动态的修改HTML能力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值