面向对象

面向对象

面向对象三要素:
​ 1.封装
​ 。组装:将数据和操作组装到一起。
​ 。隐藏数据: 对外只暴露一些接口,通过接口访问对象。 比如驾驶员使用汽车,不需要了解汽车的构造细节,只需要知道使用什么部件怎么驾驶就行,踩了油门]就能跑,可以不了解其中的机动原理。
​ 2.继承
​ 。多复用,继承来的就不用自己写了
​ 。多继承少修改,OCP (Open-closed Principle) ,使用继承来改变,来体现个性
​ 3.多态
​ 。面向对象编程最灵活的地方,动态绑定

原型对象
在这里插入图片描述
●JavaScript 中每个对象都有一个原型对象。可以通过_ proto__ 属性来访问到对象的原型对象
●构造函数的prototype属性指向一个对象,这个对象是该构造函数实例化出来的对象的原型对象
●JavaScript中的每一 个对象,都是从object. prototype对象克隆而来avaScript中的每一 个对象,都是从object. prototype对象克隆而来

居于对象创键对象
在这里插入图片描述
我们在使用0 bject.create()方法来克隆对象的时候,还可以传入第2个参数,第2
个参数是一个JSON对象,里面可以书写新对象的一些属性设定,示例如下:
在这里插入图片描述
原型相关方法:
1.prototype 和__proto__:可以找到自己的原型对象

const arr = [1,2,3,4,5]; 
console.log(Array.prototype); // []
 console.log(arr.__proto__); // [] 
 console.log(Array.prototype === arr.__proto__); // true

2.Object.getPrototypeOf() ;也可以找到自己的原型对象

let arr = [1,2,3,4,5] 
console.log(Object.getPrototypeOf(arr)); // []

3.constructor 属性(可以查看一个对象的构造函数是什么)

const arr = [1,2,3,4,5];
 console.log(arr.constructor); // [Function: Array]
  1. instanceof 操作符 (判断一个对象是否是一个构造函数的实列)
const arr = [1,2,3,4,5];
console.log(arr instanceof Array); // true
 console.log(arr instanceof Number); // false
  1. isPrototypeOf() 方法(返回一个布尔值 检测一个对象是否是一个实列对象的原型对象)
const arr = [1,2,3,4,5];
 console.log(Array.prototype.isPrototypeOf(arr)); // true console.log(arr.__proto__.isPrototypeOf(arr)); // true

6.6. hasOwnProperty() 判断一个属性是否是自己本身的还是继承而来 本身返回true 继承返回false
在这里插入图片描述

构造函数

let obj={
    name:"李三",
    age:50
}

let obj1=Object.create(obj,{
    gender:{
        value:'男',
        writable:false,
        enumerable:true

    },
    say1:{
        value:function(){
            console.log("122222211");
        }
    }
})


let cat=function(name,age){
this.age=age;
this.name=name;
}
cat.prototype.show=function(){
    console.log(`这是一只${this.name},${this.age}岁`)
}




class cat {
    constructor(name, age) {
        this.age = age;
        this.name = name;
    }

    show() {
        console.log(`这是一只${this.name},${this.age}岁`)
    }
}

let dog = new cat("狗", 18)
console.log(dog.name, dog.age)
dog.show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值