JavaScript-面向对象

1.什么是面向对象

        面向对象是一种编程思想,是编程语言的一种特性

        面向对象编程语言:java、c#、c++、js、php

        面向过程编程语言:c、c++

        面向对象编程语言的三大特性:封装、继承、多态

        封装:将数据和操作数据的方法进行封装,封装到对象中,对象中可以包含多个方法

        继承:子类可以继承父类的方法和属性

        多态:一个对象可以有多种形态

2.属性和方法

1.什么是属性

在JavaScript中,属性是指一个对象所具有的数据,可以是数据类型(如字符串、数字、布尔值等),也可以是引用类型(如数组、对象、函数等)。属性通常用于描述对象的状态或特征。

例如:一部手机的价格、处理器、屏幕等都是属性,手机则为对象

2.什么是方法

方法是指一个对象所具有的行为,是对属性的操作或处理。方法通常用于描述对象的行为或功能。在JavaScript中,方法也是一种特殊的属性,它是一个函数对象,可以在对象上调用。

例如:使用手机进行购物,看电视,玩游戏属于方法,调用手机的属性来实习某些功能

3.创建对象,添加属性、方法

1.如何创建对象

1.1 使用字面量创建对象

const obj = {
  property1: value1,
  property2: value2,
  // ...
};

1.2 使用构造函数创建对象

function Person(name, age) {
  this.name = name;
  this.age = age;
}

const person = new Person('Tom', 18);

1.3 使用Object.create()方法创建对象

const obj = Object.create(null);

1.4 使用Object.assign()方法创建对象

const obj1 = { a: 1 };
const obj2 = { b: 2 };
const obj3 = Object.assign({}, obj1, obj2);

1.5 使用展开运算符创建对象

const obj = {
  ...property1,
  ...property2,
  // ...
};

1.6 使用Object.defineProperty()方法创建对象

const obj = {};
Object.defineProperty(obj, 'property1', {
  value: value1,
  writable: false,
  enumerable: true,
  configurable: true,
});

2.给创建的对象添加属性和方法

2.1 创建了一个对象,属性有品牌、价格、芯片,方法有:看电视、购物

      var obj = {};
      obj.brand = "Redmi";
      obj.price = "1999";
      obj.chip = "Snapdragon 8+";
      obj.watchTV = function () {
        console.log("看电视");
      };
      obj.shopping = function () {
        console.log("购物");
      };
      console.log(obj);

4. 自封装

        function Person(name, age) {
            this.name = name;
            this.age = age;
        }
        Person.prototype.sayName = function () {
            console.log(this.name);
        }
        Person.prototype.sayAge = function () {
            console.log(this.age);
        }
        var person1 = new Person('张三', 18);
        var person2 = new Person('李四', 20);
        person1.sayName();
        person2.sayName();
        person1.sayAge();
        person2.sayAge();
        // 继承
        function Student(name, age, grade) {
            Person.call(this, name, age);
            this.grade = grade;
        }
        Student.prototype = new Person();
        Student.prototype.constructor = Student;
        Student.prototype.sayGrade = function () {
            console.log(this.grade);
        }
        var student1 = new Student('王五', 22, 1);
        var student2 = new Student('赵六', 24, 2);
        student1.sayName();
        student2.sayName();
        student1.sayAge();
        student2.sayAge();
        student1.sayGrade();
        student2.sayGrade();
        // 构造函数继承
        function Teacher(name, age, subject) {
            Person.call(this, name, age);
            this.subject = subject;
        }
        Teacher.prototype = new Person();
        Teacher.prototype.constructor = Teacher;
        Teacher.prototype.saySubject = function () {
            console.log(this.subject);
        }
        var teacher1 = new Teacher('田七', 32, '语文');
        var teacher2 = new Teacher('李八', 34, '数学');
        teacher1.sayName();
        teacher2.sayName();
        teacher1.sayAge();
        teacher2.sayAge();
        teacher1.saySubject();
        teacher2.saySubject();
        // 原型链继承
        function Person(name, age) {
            this.name = name;
            this.age = age;
        }
        Person.prototype.sayName = function () {
            console.log(this.name);
        }
        Person.prototype.sayAge = function () {
            console.log(this.age);
        }
        function Student(name, age, grade) {
            Person.call(this, name, age);
            this.grade = grade;
        }
        Student.prototype = Person.prototype;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值