javascript-对象

一、对象

1、什么是对象?

对象是一种数据类型(复合数据类型),对象中包含了属性和方法

(1)属性:表示对象的静态特征。使用方式为 “ 对象名.属性名”

(2)方法(函数):表示对象的行为(动态特征)。使用方式为“对象名.方法名(【参数】)”

2、对象的创建方式:

(1)使用字面量创建:{ }

let / var / const 对象名 = { }

//创建一个对象
        let student = {
            no:'wn001',
            name: '马云',
            sex: '男',
            eat:function(){
                console.log('马云在吃包子')
            },
            sleep: function(){
                console.log('马云在睡觉')
            }
        }
        //对象属性和方法的使用
        console.log('姓名:'+student.name) 
        console.log('性别:'+student.sex)
        student.eat()
        student.sleep()

说明:

(1)保存数据的格式:键: 值(key:value) ---- 称为“键值对”

(2)在程序中可以创建空对象:对象名 = { }

(3)给空对象添加属性、方法

3、通过Object来创建对象:

(1)Object对象:是JavaScript中所有对象的基类

(2)创建空对象:new Object()

let obj = new Object()
console.log(obj)
obj.name = '诸葛亮'
obj.sex = '男'
obj.info = function(m,n,t){
            console.log('空城计')
}
console.log(obj)

练习2:通过Object创建一个对象,该对象的属性有:bookId、bookName、publishing,

包含的方法有:

setBookName(name):修改bookName属性值

setPublishing(publish):修改publishing属性值

showBookInfo():显示图书信息

        let obj = new Object()
        
        obj.bookId = '001'
        obj.bookName = '三国演义'
        obj.publishing = '商务印书馆'
​
        obj.setBookName = function(name){
            this.bookName = name   //this代表当前对象obj
        }
        obj.setPublishing = function(publishing){
            this.publishing = publishing
        }
        obj.showBookInfo = function(){
            console.log('图书编号:',this.bookId)
            console.log('图书名称:',this.bookName)
            console.log('出版社:',this.publishing)
        }
​
        obj.showBookInfo()
        console.log('-----------------------------')
        obj.setBookName('水浒传')
        obj.setPublishing('机械工业出版社')
        obj.showBookInfo()

let book = new Object({
          bookId: '001',
          bookName: 'ABC',
          publishing: '电子工业',
          setBookName:function(name){
            this.bookName = name
          },
          setPublishing:function(publishing){
            this.publishing = publishing
          },
          showBookInfo:function(){
            let str = `图书编号:${this.bookId}\n图书名称:${this.bookName}\n出版社:${this.publishing}`
            console.log(str)
          }
       }) 
​
       book.showBookInfo()
       console.log('--------------------------')
       book.setBookName('红楼梦')
       book.setPublishing('北大出版社')
       book.showBookInfo()

4、利用构造函数创建对象

(1)构造函数:是一个函数(定义方式和普通函数的定义方式一样的)

function 构造函数名(【参数】){

this.属性名 = 属性值

this.方法名 = function(【参数】){

方法体语句

}

}

建议:构造方法名的首字母要大写

定义构造方法就是画图纸的过程,通过构造方法创建对象(new 构造方法名())就是根据图纸生成对象的过程

(2)通过构造方法创建对象:new 构造方法名(【参数】)

(3)对象使用属性和方法:

对象名.属性

对象名.方法名(【参数】)

//1.定义一个构造方法:包含name、sex、address三个属性,setName(name)、setSex(sex)、setAddress(address)三个方法
        function Student(){   //类似于画图纸
            this.name = '王昭君'
            this.sex = '女'
            this.address = '西安'
​
            this.setName = function(name){
                this.name = name
            }
            this.setSex = function(sex){
                this.sex = sex
            }
            this.setAddress = function(address){
                this.address = address
            }
        }
​
        //2.利用构造方法创建对象
         let s1 = new Student()  //强调:构造方法中的this代表当前创建的对象s1
​
         console.log('姓名:',s1.name)
         console.log('性别:',s1.sex)
         console.log('地址:',s1.address)
​
         let s2 = new Student()  //this代表s2
         s2.setName('西施')
         console.log('姓名:',s2.name)

练习3、定义一个构造方法Car(),属性是:color、engine、type ,方法是:setColor(color)、setEngine(engine)、setType(type)、

showCar()

创建两个对象,分别是car1和car2,显示car1的信息,修改car2的三个属性并显示出来

//1.定义构造方法:Car()
        function Car(color,engine,type){
            this.color = color
            this.engine = engine
            this.type = type
​
            this.setColor = function(color){
                this.color = color
            }
            this.setEngine = function(engine){
                this.engine = engine
            }
            this.setType = function(type){
                this.type = type
            }
            this.showCar = function(){
                console.log('颜色:',this.color)
                console.log('引擎:',this.engine)
                console.log('型号:',this.type)
            }
        }
        //2.创建对象car1:是构造方法实例化。对象就是实例
        let car1 = new Car('红色','L4','2.0')
        car1.showCar()
        console.log('----------------------------')
        //3.创建对象car2:
        let car2 = new Car('蓝色','v6','3.0')
        car2.showCar()

强调:this代表的是由构造方法创建的对象

练习4、定义构造方法Person(name,age),属性有:name、age ,方法有:setName(name)、setAge(age)、display()

使用该构造方法创建两个对象:

第一个对象的name:郭靖,age = 22

第二个对象的name:黄蓉,age = 18

显示这两个对象的信息

function Person(name,age){
            this.name = name
            this.age = age
​
            this.setName = function(name){
                this.name = name
            }
            this.setAge = function(age){
                this.age = age
            }
            this.display = function(){
                console.log('姓名:',this.name)
                console.log('年龄:',this.age)
            }
        }
​
let p1 = new Person('郭靖',22)
p1.display()
​
let p2 = new Person('黄蓉',18)
p2.display()

二、遍历对象的属性和方法:使用for...in循环

1、对象访问属性或方法的方式:对象名[ '属性名或方法名' ]

2、for...in的使用方法:

let people = {
            id: '1001',
            name: '张三丰',
            age : 88,
            show:function(){
                console.log('姓名:',this.name)
            }
        }

        for(let p in people){
            console.log(p+':'+people[p]) //p既是people对象的属性名或方法名,也是索引
        }

三、in运算符:判断对象中是否存在某个属性或方法

console.log('show' in people) //判断people对象中是否有id这个成员

四、对象数组:数组中存放的是对象(数组中的每个元素都是对象)

//1.创建一个构造方法:Student
        function Student(name,city){
            this.name = name
            this.city = city

            this.html = 0  //html属性的默认值为0
            this.css = 0   //css属性的默认值为0
            this.show = function(){
                console.log('姓名:',this.name)
                console.log('城市:',this.city)
                console.log('Html成绩:',this.html)
                console.log('Css成绩:',this.css)
            }
            this.getSum = function(){
                return this.html + this.css
            }
        }

        //2.创建对象
        let s1 = new Student('贾宝玉','南京')
        s1.html = 78
        s1.css = 69

        let s2 = new Student('林黛玉','镇江')
        s2.html = 85
        s2.css = 90
       
        let s3 = new Student('王熙凤','南京')
        s3.html = 75
        s3.css = 78

        let s4 = new Student('薛宝钗','南京')
        s4.html = 82
        s4.css = 65

        //3.定义数组:将s1~s4对象存入该数组
        let arr  = [s1,s2,s3,s4] //arr就是对象数组
        let temp = [s1,s2,s3,s4]
        console.log(temp)
        //4.对数组中的对象按总成绩降序排列
        for(let i=0;i<arr.length;i++){
            for(let j=0;j<arr.length-1;j++){
                if(arr[j].getSum() < arr[j+1].getSum()){
                    let t = arr[j]
                    arr[j] = arr[j+1]
                    arr[j+1] = t
                }
            }
        }
        console.log(arr)

总结:

一、复习

1、对象:是一种数据类型(复合数据类型),用来存储数据。数据格式(key:value)。对象是属性和行为的结合体

2、对象的定义:

(1)使用字面量:{ }

let 对象名 = {

属性名:属性值

方法名:function(【参数】){

函数体语句

}

}

(2)使用Object:

a、let 对象名 = new Object()

对象名.属性名 = 属性值

对象名.方法名 = function(【参数】){

函数体语句

}

b、let 对象名 = new Object({

属性名:属性值

方法名:function(【参数】){

函数体语句

}

})

(3)使用构造函数创建对象

a、定义构造函数:

function 构造函数名(【参数】){

this.属性名 = 属性值

this.方法名 = function(【参数】){

函数体语句

}

}

b、创建对象

let 对象名 = new 构造函数名(【参数】)

3、对象访问属性和方法

对象名.属性名

对象名.方法名(【参数】)

练习1:  请定义一个交通工具(Vehicle)的构造方法,其中有: 属性:速度(speed),体积(size) 方法:移动(move()),设置速度(setSpeed(speed)),加速speedUp(),减速speedDown().

创建一个交通工具对象,并通过构造方法给它初始化speed,size的值,并且打印出来。另外,调用加速,减速的方法对速度进行改变。

function Vehicle(type,speed,size){
            this.type = type
            this.speed = speed
            this.size = size
            this.move = function(){
                console.log(this.type+'在移动...')
            }
            this.setSpeed = function(speed){
                this.speed = speed
            }

            this.speedUp = function(){
                console.log(this.type+'原来的速度为:',this.speed)
                this.speed += 20
                console.log(this.type+'加速到:',this.speed)
            }
            this.speedDown = function()
            {
                console.log(this.type+'原来的速度为:',this.speed)
                this.speed -= 50
                console.log(this.type+'减速到:',this.speed)
            }
        }

        let bm = new Vehicle('宝马',120,5.0)
        bm.move()
        bm.speedUp()
        bm.speedDown()

        console.log('-----------------------')
        let bz = new Vehicle('奔驰',100,4.98)
        bz.move()
        bz.speedUp()
        bz.speedDown()

        console.log('-----------------------')
        let fly = new Vehicle('空客A380',800,35)
        fly.move()
        fly.speedUp()
        fly.speedDown()

练习2:  模拟简单的计算器。定义名为Number的构造方法 属性:n1和n2。 方法:加(addition)、减(subtration)、乘(multiplication)、除(division),

用Number创建对象分别对两个成员变量执行加、减、乘、除的运算。并显示计算结果。

function Number(n1,n2){
            this.n1 = n1
            this.n2 = n2

            this.addition = function(){
                return n1 + n2
            }
            this.subtration = function(){
                return n1 - n2
            }
            this.multiplication = function(){
                return n1*n2
            }
            this.division = function(){
                if(n2 != 0){
                    return n1/n2
                }
                alert('除数不能为0')
            }
        }

        let a = 15,b = 20

        let num = new Number(a,b)
        console.log(`${a} + ${b} = ${num.addition(a,b)}`)
        console.log(`${a} - ${b} = ${num.subtration(a,b)}`)
        console.log(`${a} * ${b} = ${num.multiplication(a,b)}`)
        console.log(`${a} / ${b} = ${num.division(a,b)}`)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值