11.js高级-构造函数和原型

js面向对象

  • 能够说出什么是面向对象
  • 能够说出类和对象的关系
  • 能够使用class创建自定义类
  • 能够说出什么是继承
  1. 面向对象编程介绍
  2. ES6中的类和对象
  3. 类的继承
  4. 面向对象案例

1.面向对象编程介绍

1.面向过程:pop就是将每一个步骤用函数封装再依次调用

2.面向对象:oop就是先找出对象,然后由对象之间分工合作

3.面向对象三大特性:封装性,继承性,多态性

2.ES6中的类和对象

类指的是一大类,对象是特指的某一个,通过类实例化一个具体。抽取对象共用的属性和方法变成一个类

语法:class name{};创建实例:var xx = new name();

constructor()方法是类的构造函数,用于传递参数,返回实例对象

3.类的继承

class father{};class son extends father{}子类继承了父类里的属性和方法

super关键字:可以调用父类中的方法和构造函数和普通函数

super()必须在子类this之前调用

三个注意点:1.必须先有类,才能实例化,再调用方法 2.共有属性和方法必须加个this.调用

constructor()的this指向的是创建的实例对象,方法里面的this指向的是调用者


构造函数和原型

1.构造函数和原型

function star(参数){对象的公共部分}。注意:首字母要大写,构造函数要和New一起使用才有意义

new在执行时会做四件事:1.在内存中创建一个新的空对象2.让this指向这个新的对象3.执行构造函数里面的代码,给这个新对象添加属性和方法4.返回这个新对象

静态成员:在构造函数本身上添加的成员,静态成员只能通过构造函数来访问

实例成员就是构造函数内部通过this添加的成员,实例成员只能通过实例化的对象来访问

构造函数存在浪费内存的问题:通过原型分配的函数是所有对象所共享的prototype

原型是一个对象,我们也称为prototype为原型对象

原型的主要作用是共享方法

对象原型_proto)

构造函数,实例,原型对象三者之间的关系.铁三角图

star原型对象里面的_roto_原型指向的是Object.prototype

原型链见图!!!

this指向问题:原型对象函数里的this指向的也是实例对象

扩展内置对象:数组和字符串里不能用对象方式添加方法,只能用自定义方法

2.继承

1.组合继承:call(),call()可以改边这个函数的this指向。father.call(this,参数)通过构造函数继承属性,通过原型对象son.prototype=new father();son.prototype.constructor=son

3.ES5新增的方法

1.数组新增的方法:遍历方法:forEach(function(value,index,array){}),map(),filter(),some(),every()

filter(function(value,index,array){})通过检查指定数组中符合条件的所有元素,主要用于筛选数组,直接返回一个新数组

some(function(value,index,array)用于检测数组中的元素是否满足指定条件,返回的是布尔值,如果找到第一个满足条件的元素则终止循环

2.字符串新增的方法:str.trim()该方法会从一个字符串的两端删除空白字符,不影响字符串本身,返回的是一个新的字符串

3.对象方法(重要):Objects.keys()用于获取对象自身所有的属性类似于for...in返回一个由属性名组成的数组

Object.defineProperty()定义对象中新属性或修改原有的属性;Object.defineProperty(obj,prop,descriptor)writable:false不允许修改这个属性

enumerable:false不会被遍历出来,configurable目标属性能否被删除或者再次修改特性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值