关于面向对象
Posted jiapei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于面向对象相关的知识,希望对你有一定的参考价值。
面向对象oop:是一种编程思想,在程序中用对象来描述现实中一个具体的事物
对象:封装了一个事物的属性和功能的程序结构
面向对象的三大特征: 封装 ; 继承 ; 多肽
封装 : 讲一个事物的属性和功能集中定义在一个对象
事物的属性 , 会成为对象的属性
事物的功能 , 会成为对象的方法
创建自定义对象的三种方法
1、使用对象的直接量
var 对象名 =
属性名 : 属性值,
…… : ……,
方法名 : function()
,
…… : ……,
其中有一个关键字this,用来引用正在调用函数对象的关键词
例如对象自己的方法,要访问自己的属性,就必须用this.属性名!!!!
2、使用new方法创建(创建的时候暂时不知道对象的内容)
var 对象名 = new Object() 创建一个空对象
向空对象中添加属性和方法,添加的方式与第一种创建方式一至
new方法四个步骤
1.创建新的空对象
2.用new创建对象时,会自动设置子对象的_proto_来继承构造函数的prototype属性
3.用新对象去调用构造函数
4.将新对象的地址保存在变量
3、构造函数 也称constructor构造器
专门用来描述一类对象统一结构的函数 即共有的属性和方法
当反复创建多个相同结构的对象时,定义统一的构造函数,再反复构造函数的使用
构造函数的定义
3.1 类型名首字母大写
function 类型名 (属性参数列表)
this.属性名 = 属性参数值;
……;
this.方法名 = function ()
……this.属性名……
3.2 用new调用构造函数,传入具体对象的属性值(创建并装饰新对象)
var obj = new 类型名(属性值列表)
创建一个指定类型的对象;用new调用指定类型
继承
父对象的成员,子对象不可重复创建,可直接使用
这样不仅可以节省内存,还可以减少代码量让代码重复使用
用处:只要一类子对象,都需要相同的属性和功能时,就将相同的属相和功能仅在父对象里定义一次
js中的继承都是继承的原型对象
原型对象: 专门集中存储一类子对象相同属性和功能的父对象,同一类子对象所共有的属相和方法
而每一次创建一个构造函数,都会自动赠送一个原型对象
修改原型对象时,不会去修改原型对象的属性值,而是在子对象中添加一个新的属性
自有属性 : 直接保存在对象本地的属性
共有属性 : 保存在原型对象中,被所有子对象共享的
使用的方法都是 : 创建的类型名 : 属性/方法
function CheckProperty(Obj.pname)
if()
else
原型对象的验证:
1.console.log(Object.prototype.toString.call(obl));
2.Array.is(Obj)
console.log(
Array.isArray(obj)
)
删除属性
可使用关键字delete删除对象的属性,但此操作存在危险性,使用时须三思
原型链
原型本身也是个对象,因此原型对象也有原型,对象就有_proto_,有多继父元素逐渐继承
原型链保存着 : 所有对象的方法和属性
作用域链保存着 : 所有的变量
作用域链的作用 : 控制变量的使用顺序,优先使用活动对象AO的局部变量,局部中没有找到才去延作用域链向父级查找
原型链的作用 : 控制对象访问成员的使用顺序,优先使用自己的,自己没有才向父级查找
原型链的顶端 : Object ,prototype;
作用域的顶端 : window
简述:
所有不需要对象,访问的变量都保存在作用域链中
所有需要对象,访问的变量都保存在 原型链中
多肽
定义: 同一个事物,在不同的情况下表现出不同的状态
重写 override :
如果子对象觉得父对象的成员不好用,便自己定义一个重名的成员来使用
两个对象之间的继承关系
child __proto __ = father,
继承
Object.setPrototypeOf(child,father)
批量设置继承关系
构造函数 . Prototype = father,
以上是关于关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章