js中面向对象的知识总结

这篇博客总结了JavaScript中的面向对象编程,包括面向对象的三大特征——封装、继承、多态,以及原型对象的概念和相关方法,如`_proto_`、`Object.create()`。还详细介绍了构造函数的使用,如通过`new`关键字实例化对象、显式返回内容的情况以及ES6中的类声明和静态方法。此外,还提到了`instanceof`操作符、`isPrototypeOf()`方法以及属性特性与描述符的设置。
摘要由CSDN通过智能技术生成

面向对象概述

面向对象,全称为Object Oriented Programming 简称OOP。属于编程范式中的命令式编程。

面向对象特征

三大特征:封装、继承、多态

封装:内部运作隐藏在对象里面,只有基本功能暴露给最终用户

继承:子类继承父类

多态:不同的对象可以共享相同方法,还能用一些特定的方法来覆盖原有的方法

原型对象

在js中,每一个对象,都有一个原型对象,而原型对象上面也有自己的原型对象,一层一层向上找,最终会找到null。

1、js中每个对象都有一个原型对象,可以通过_proto_属性来访问到对象的原型对象。
2、通过_proto_属性一直向上寻找原型对象的话,最终会找到null
3、构造函数的prototype属性指向一个对象,这个对象是该构造函数实例化出来的对象的原型对象。
4、js中的根对象是Object.prototype,Object.prototype对象是一个空对象。
5、js中的每一个对象,都是从Object.prototype对象克隆而来的。Object.prototype对象就是他们的原型对象,而Object.prototype对象的原型是null。

基于对象创建新的对象

ES5中提供Object.create()方法,可以用来克隆对象
用这个方法克隆对象时,还可以传入第二个参数,第二个参数是一个JSON对象,里面可以书写新对象的一些属性的设定
例子:

const person = {
    
arms: 2,
 legs: 2, 
walk() {
    
console.log('walking'); 
} 
} 
const xiejie = Object.create(person, {
    
name: {
   
 value: "xiejie", 
writable: false, 
enumerable: true 
}, 
age: {
    
value: 18, 
enumerable: false 
} 
}); 
console.log(xiejie.name); // xiejie
 console.log(xiejie.age); // 18 
console.log(xiejie.arms); // 2 
console.log(xiejie.legs); // 2 
for (let i in xiejie) {
    
console.log(i); // name arms legs walk 
}

属性特性和描述符
可以使用Object.defineProperty()来设置属性特征
value: “xiejie”, //值
writable: false, //是否能够修改
enumerable: true //是否能够遍历出来
configuration //是否能够删除

注:基于对象创建新的对象,可以继承祖辈对象的属性和方法,这其实就是一个继承关系。

原型相关的方法

  1. prototype 和__proto__
    prototype 是构造函数上面的一个属性,指向一个对象,这个对象是该构造函数实例化出来的对象的原型对象,实例化出来的对象可以通过_proto_来找到自己的原型对象
const arr = [1,2,3,4,5]; 
console.log(Array.prototype); // []
 console.log(arr.__proto__); // [] 
console
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值