一、对象

  • 在对象里的function叫做方法
  • 在对象外的function叫做函数

1.1、对象的基本形式及增删改查

  • 如果对象里面有这个属性名,那么对象.属性就属于修改;没有这个属性名则属于新增
  • 在对象里面,this指向的就是当前对象本身

    1. // 对象的基本形式
    2. var teacher = {
    3. name: '张三',
    4. sex: 'male',
    5. age: 18,
    6. weight: 130,
    7. teach: function(){
    8. console.log('I am teach JavaScript');
    9. },
    10. eat: function(){
    11. this.weight++;
    12. console.log(this.weight);
    13. console.log('I am having a dinner');
    14. },
    15. smoke: function(){
    16. this.weight--;
    17. console.log(this.weight);
    18. console.log('I am smoking');
    19. }
    20. }
    21. teacher.teach();
    22. teacher.eat();
    23. teacher.smoke();
    24. teacher.smoke();
    25. // 对象的增删改查
    26. // 如果对象里面有这个属性名,那么对象.属性就属于修改;没有这个属性名则属于新增
    27. // 在对象里面,this指向的就是当前对象本身
    28. // 新增
    29. teacher.height = 175;
    30. // 删除 需要借助关键词delete
    31. delete teacher.age;
    32. // 修改
    33. teacher.age = 22;
    34. // 查询
    35. var res = teacher.weight;
    36. console.log(res);
    37. console.log(teacher);

    二、简单了解数组里的两个常用方法

  • ary.splice(n, m); 从索引n开始删除m个

  • ary.indexOf(n); 找到n在数组里出现的索引位置,如果该数组不包含n,那么返回的结果是-1

    1. // ary.splice(n, m);
    2. var ary = [1, 2, 3, 4, 5];
    3. ary.splice(0, 2);
    4. console.log(ary);
    5. // ary.indexOf(n);
    6. var arr = [11, 22, 33, 44, 55];
    7. var res = arr.indexOf(55);
    8. console.log(res);

    三、对象字面量和构造函数

    3.1、对象字面量

    1. // 对象字面量
    2. var person = {
    3. name: 'liangyu',
    4. age: 18,
    5. weight: 130,
    6. height: 170
    7. }
    8. person.name = 'kola';
    9. console.log(person);

    3.2、系统自带的构造函数

    系统自带的构造函数和对象字面量没什么区别

    1. // 构造函数 系统自带的构造函数
    2. var obj = new Object();
    3. obj.name = '张三';
    4. obj.age = 10;
    5. console.log(obj);

    3.3、自定义构造函数

  • 注意:自定义构造函数需要使用大驼峰来命名

  • 构造函数如果不被执行,里面的this根本没有作用
  • 构造函数实例化过程中,构造函数只有new了以后,里面的this才会执行当前这个实例化对象本身;如果不被new,把它当做普通函数执行的话,里面的this就指向window

    1. // 自定义构造函数
    2. function Teacher(){
    3. this.name = '李四';
    4. this.age = '18';
    5. this.weight = 130;
    6. this.course = 'JavaScript';
    7. }
    8. var t1 = new Teacher();
    9. var t2 = new Teacher();
    10. console.log(t1, t2);
    11. // 代码优化
    12. function Teacher(name, age, weight, course){
    13. this.name = name;
    14. this.age = age;
    15. this.weight = weight;
    16. this.course = course;
    17. }
    18. var t1 = new Teacher('liangyu', 18, 130, 'JavaScript');
    19. var t2 = new Teacher('kola', 22, 120, 'HTML');
    20. console.log(t1, t2);
    21. // 代码再次优化: 终极写法
    22. function Teacher(opt){
    23. this.name = opt.name;
    24. this.age = opt.name;
    25. this.weight = opt.weight;
    26. this.course = opt.course;
    27. }
    28. var t1 = new Teacher({
    29. name: '张三',
    30. age: 19,
    31. weight: 120,
    32. course: 'Java'
    33. });
    34. var t2 = new Teacher({
    35. name: '李四',
    36. age: 23,
    37. weight: 130,
    38. course: 'CSS'
    39. });
    40. console.log(t1, t2);

    四、作业

  • 写一个构造函数,接收数字类型的参数,参数数量不定,完成参数相加和相乘的功能

    1. function compute(){
    2. var res = 0;
    3. var operation = {
    4. add: function(){
    5. for(var i = 0; i < arguments.length; i++){
    6. var item = Number(arguments[i]);
    7. res += item;
    8. }
    9. return res;
    10. },
    11. mul: function(){
    12. if(res == 0){
    13. res += 1;
    14. }
    15. for(var i = 0; i < arguments.length; i++){
    16. var item = Number(arguments[i]);
    17. res *= item;
    18. }
    19. return res;
    20. }
    21. }
    22. return operation;
    23. }
    24. var compute = compute();
    25. // console.log(compute.add('1', null, 3, 4));
    26. console.log(compute.mul(1, 2, 3, 4));

    更新版 ```javascript // 作业

    1. // 写一个构造函数,接收数字类型的参数,参数数量不定,完成参数相加和相乘的功能
    2. // 普通写法
    3. function Compute(){
    4. var res = 0;
    5. this.plus = function(){
    6. loop(arguments, 'add', res);
    7. }
    8. this.mul = function(){
    9. res = 1;
    10. loop(arguments, 'mul', res);
    11. }
    12. function loop(args, methods, reds){
    13. for(var i = 0; i < args.length; i++){
    14. var item = args[i];
    15. if(methods === 'add'){
    16. res += item;
    17. }else if(methods === 'mul'){
    18. res *= item;
    19. }
    20. }
    21. console.log(res);
    22. }
    23. }
    24. var compute = new Compute();
    25. compute.plus(2, 4, 6);
    26. compute.mul(3, 5, 7);
  1. // 构造函数版本
  2. function Compute(){
  3. var res = 0;
  4. this.plus = function(){
  5. Compute.prototype.loop(arguments, 'add', res);
  6. }
  7. this.mul = function(){
  8. res = 1;
  9. Compute.prototype.loop(arguments, 'mul', res);
  10. }
  11. }
  12. Compute.prototype = {
  13. loop: function(args, methods, res){
  14. for(var i = 0; i < args.length; i++){
  15. var item = args[i];
  16. if(methods === 'add'){
  17. res += item;
  18. }else if(methods === 'mul'){
  19. res *= item;
  20. }
  21. }
  22. console.log(res);
  23. }
  24. }
  25. var compute = new Compute();
  26. compute.plus(2, 4, 6);
  27. compute.mul(3, 5, 7);
  1. - 写一个构造函数,可以设置车的品牌、颜色、及排量;再写一个消费者构造函数,设置用户的名字,年龄、收入,通过选择的方法实例化用户喜欢的车、再设置车的属性
  2. ```javascript
  3. function Car(opt){
  4. this.brand = opt.brand;
  5. this.color = opt.color;
  6. this.pt = opt.pt;
  7. };
  8. function Consumer(opt){
  9. this.name = opt.name;
  10. this.age = opt.age;
  11. this.income = opt.income;
  12. };
  13. function chooseCar(){
  14. var consumer = new Consumer({
  15. name: '小明',
  16. age: 18,
  17. income: '12k'
  18. });
  19. if(consumer.income < '10k'){
  20. var car = new Car({
  21. brand: '比亚迪',
  22. color: '白色的',
  23. pt: 1.5
  24. });
  25. console.log('您应该购买:' + (car.color + car.brand + '排量为:' + car.pt));
  26. }
  27. if(consumer.income > '10k'){
  28. var car = new Car({
  29. brand: '大众',
  30. color: '黑色的',
  31. pt: 2.0
  32. });
  33. console.log('您应该购买:' + (car.color + car.brand + '排量为:' + car.pt));
  34. }
  35. }
  36. chooseCar();

作业修正

  1. // 作业
  2. // 写一个构造函数,可以设置车的品牌、颜色、及排量;再写一个消费者构造函数,设置用户的名字,年龄、收入,通过选择的方法实例化用户喜欢的车、再设置车的属性
  3. function Car(opt){
  4. this.brand = opt.brand;
  5. this.color = opt.color;
  6. this.displacement = opt.displacement;
  7. }
  8. function Person(opt){
  9. this.name = opt.name;
  10. this.age = opt.age;
  11. this.income = opt.income;
  12. this.selectCar = function(){
  13. var myCar = new Car(opt.carOpt);
  14. console.log(this.name + '挑选了一辆排量为' + myCar.displacement + '的' + myCar.color + myCar.brand);
  15. }
  16. }
  17. var jone = new Person({
  18. name: '约翰',
  19. age: 20,
  20. income: '10k',
  21. carOpt: {
  22. brand: '马自达',
  23. color: '黑色',
  24. displacement: '2.0'
  25. }
  26. });
  27. jone.selectCar();