学习时间 完成时间 ✅ 重难点 疑问/遗漏
复习时间

闭包

高级程序设计第四版定义:闭包是指那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。

对象

  1. var obj={
  2. name:'ckl',
  3. age:18,
  4. teach: function(){}
  5. }
  6. 添加对象:
  7. obj.address='北京'
  8. 删除对象
  9. delete obj.age
  10. 获取对象的key
  11. Object.keys(obj) //["name", "age", "teach"]
  12. 获取对象的values
  13. Object.values(obj) //["ckl", 18, ƒ]
  14. 获取对象的keyvalues
  15. Object.entries(obj) //[["name", "ckl"],["age", 18],["teach", ƒ]]
  16. //创建对象的方式
  17. var obj=new Object();
  18. obj.name='ckl';
  19. //自定义构造函数 大驼峰
  20. function Teacher() {
  21. this.name='张三'; //this只有被实例化new的时候才会被创建
  22. this.sex='男士';
  23. this.smoke=function(){
  24. console.log('I am smokeing')
  25. }
  26. }
  27. var teacher=new Teacher()
  28. function Car() {
  29. this.car='car'
  30. console.log('this',this)
  31. //return this; //会隐士的返回this 所以new出来的对象和this全等
  32. }
  33. (1)Car();
  34. (2)var car=new Car()
  35. 在没有实例化的时候(没有执行2),this指向的是window,只有当实例话的时候
  36. this指向实例化的对象,this的指向一定是实例化的对象,而不是构造函数
  37. 当构造函数被实例话的时候,就像普通的函数被执行,只要构造函数执行就会创建构造函数的上下文
  38. AO={
  39. this:{car:car}
  40. }

包装类

原始数据类型
var num=3
var a=new number(3)
a.len=3
此时a就会有len属性

var arr=[1,2,3,4,5]
arr.length=2;
console.log(arr) //[1,2]

var str=’abc’
str.length=1
console.log(str)// ‘abc’
length对数组会截取,对字符串不会截取

  1. //第一题
  2. var name='languiji'
  3. name+=10;//'languiji10'
  4. var type=typeof(name);//'string'
  5. //(1) var type=new String(typeof(name)) 加上这一句下面才会打印type.text==='string'
  6. if(type.length===6) {
  7. type.text='string'
  8. }
  9. console.log(type.text)//undefined
  10. //第二题
  11. function Test(a,b,c) {
  12. var d=1;
  13. function f(){
  14. d++;
  15. console.log(d);
  16. }
  17. this.g=f;
  18. }
  19. var test1=new Test();
  20. test1.g();//2
  21. test1.g();//3
  22. var test2=new Test();
  23. test2.g();//2
  24. //第三题
  25. var x=1,y=z=0;
  26. function add(n) {
  27. return n=n+1;
  28. }
  29. y=add(x);
  30. function add(n) {
  31. return n=n+3
  32. }
  33. z=add(x)
  34. console.log(x,y,z) //1,4,4
  35. //第四题
  36. function foo1(x) {
  37. console.log(arguments)
  38. return x;
  39. }
  40. foo1(1,2,3,4,5);
  41. function foo2(x){
  42. console.log(arguments)
  43. return x
  44. }(1,2,3,4,5)
  45. (function foo3(){
  46. console.log(arguments)
  47. return x
  48. })(1,2,3,4,5)
  49. 只有13可以打印出12345
  50. foo2不执行,如果foo2里没有数值则会报错
  51. 第五题
  52. function b(x,y,a) {
  53. //a=10;
  54. //console.log(argument[2]) 10
  55. arguments[2]=10;
  56. console.log(a);//10
  57. }
  58. b(1,2,3) //如果a没有传则 形参与arguments的映射就没有,此时再打印arguments为undefined

ASCII码

ASCII码 表1 0~127 一个字节 byte 表二 128~255
UNICODE码 涵盖ASCII码

  1. var str='abc'
  2. var pos=str.charCodeAt(0);此处的0表示字符串第零个位置的字符对应的码

作业

  1. function Car(opt){
  2. this.brand=opt.brand;
  3. this.color=opt.color;
  4. this.displacement=opt.displacement;
  5. }
  6. function Person(opt){
  7. this.name=opt.name;
  8. this.age=opt.age;
  9. this.income=opt.income;
  10. this.selectCar=function(){
  11. var myCar=new Car(opt.carOpt);
  12. console.log(this.name+'挑选了一辆排量为'+myCar.displacement+'的'+myCar.color+myCar.brand)
  13. }
  14. }
  15. var jone=new Person({
  16. name:'约翰'
  17. age:29,
  18. income: '20k',
  19. carOpt:{
  20. brand:'马自达',
  21. color:'红色',
  22. displacement: '2.0'
  23. }
  24. })
  25. jone.selectCar();