JavaScript高级程序设计-笔记总结-1-6章

大致看过一遍红宝书,想让自己留下点东西。

script属性
  • defer属性,表示加载完dom后再解析js,只适应于外部js脚本。
  • async属性:当前js脚本加载不必等其他脚本,不能保证异步正常展示。
外部js优点:
  • 可维护性
  • 可缓存:两个页面使用同一js,只要加载一次。

js语句的分号建议一直使用;;

数据类型
  • 基本:字符,数值,布尔(true和false区分大小写),null,undefined
  • 引用类型:数组,对象
  • typeof temp或者typeof(temp) ty****peof null 返回object

3,14e2=314

数值
  • 特殊数值NaN:涉及的操作均为NaN;与任何值不等,不等Nan
  • Number():null和空字符串–》0
  • parseInt(“124as”)空字符–》Nan
  • var num= Math.pow(5,2) //25
字符
  • num.toString(),num.String()
  • num.valueOf()返回数组形式
  • concat或者+: 拼接
  • str1.trim()
变量
  • 函数内定义的var temp变量,在函数外会被销毁,而只定义temp作为全局变量会保留;

不能重载,即函数覆盖。
作用域链

  • 在执行环境中可以访问相应的变量,函数外不能访问函数内的,内可以访问外的。
垃圾收集的策略
  • 标记清除:不使用的值加标记,离开执行环境即清除。
  • 引用计数:引用次数,归0时清除。
数组item Array
  • 栈push pop
  • 队列shift取出第一个,unshift末尾增加
  • reverse()反转
  • color.slice(1),转为拼接字符串
  • num.indexOf(6) 返回下标或-1
  • splice()删除,插入,替换
  • filter()过滤,括号内+条件-》
  • map(function(){})数组值转换
  • reduce(function)迭代累加
正则表达式
  • var patten1 = /[cb]at/i; //匹配第一个包含cat和bat的字符
  • var patten2 = /{cb}at/i; {cb}at
  • var jiewei=/.doc/gi;
函数内置属性
  • arguement.callee: 消除紧密藕合,即,在别处也可使用该函数(递归调用后,可以继续使用)
  • this,函数在全局作用域运行时,this=window

eval()内的变量或函数都不会提升

创建对象(五种方式)
  • 工厂模式:函数内创建对象,最后return 对象。使用时var person= createPerson(‘hzx’,29)
  • 构造函数:函数内使用this,无需return。使用时var person = new creatPerson()
  • **原型模式: prototype所有成员共享属性和方法,各自实例可以修改自己的值。**存在问题:两个实例共享的原型,属性值是引用类型时,该值会被共享。2、

function Person {
person.prototype.name=name }

  • 组合使用构造函数和原型:构造函数定义实例,原型定义共享的属性和方法
  • 动态原型:属性和方法,在方法中使用prototype
原型链理解
  • 一个原型对象A(包括属性和方法)被另一个原型B继承,B可以使用A的属性和方法。
  • B.prototype= new A()
  • 存在问题:1、引用类型的属性值会共享 2、无法向原型A中传参。解决方法(借用构造函数和组合继承)

借用构造函数

  • 使用call()和apply(): 子构造函数中,funA{ funA.call(this)}

组合继承(使用最多)

  • 使用原型链实现原型的属性和方法继承
  • 借用构造继承实例的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值