Js高级-面向对象


js高级面向对象

一、什么是对象 万物皆对象

1、对象是单个事物的抽象

2、对象是一个容器,封装了属性(property) 和方法( method)

3、对象是数据集或功能集

4、对象是无序属性的集合

二、什么是面向对象

是一种编程开发思想。

它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。

三、面向对象的特征

1、封装

2、继承

3、多态

constructor //构造函数;构造者;建造者

结论:任何一个对象都有constructor 属性,实例化对象的constructor 属性指向构造函数

1、BOM对象

2、DOM对象

3、内置对象

4、自定义对象

5、数组也是对象,广义上的对象

6、函数也是对象,广义上的对象

instanceof (狭义)

如果要检测对象的类型,还是使用 instanceof 操作符更可靠一些,返回true为对象

变量/值 instanceof Object

js拥有内存自主回收机制
内存的生命周期

内存的分配: 变量的定义  函数的声明

内存的使用: 变量的使用  函数的调用

内存的销毁: 浏览器的关闭  函数调用的完成
构造函数浪费内存问题
1、将公共的属性放到全局

2、可以将公共的方法写到全局

3、原型

四、原型

一、原型的作用:

1、节省内存空间

2、实现数据共享(继承)

二、什么是原型

  任何一个函数都有prototype属性,他本身就是一个对象,我们称之为原型

三、构造函数和实例化对象和原型之间的关系

1、任何一个函数都有prototype属性,他本身就是一个对象,我们称之为****原型

2、构造函数也是函数,也有prototype属性,他本身就是一个对象,我们称之为原型

3、构造函数原型对象的属性和方法可以被实例化对象所继承

4、任何一个对象都有constructor属性,实例化对象的constructor 属性指向的是构造函数

5、原型也是对象,也有constructor属性,原型对象的constructor属性指向的是构造函数

6、任何一个对象**proto属性,实例化对象的__proto__属性指向构造函数的原型**

五、函数中this的指

原型函数

用实例化对象调用函数,this指向****实例化对象

用原型对象调用函数,this指向****原型对象

new关键字的作用
  1、创建一个新对象,返回一个新对象

  2、改变构造函数中this的指向,指向实例化对象
new关键字的底层原理
  1、var p1 = {}  创建了一个对象

  2、p1.__proto__ == Person.prototype     p1的指针指向构造函数的原型,原型对象中的属性和方法可以被继承

  3、Person.call(p1)    调用函数,改变this指向
function Person(name) {
  this.name = name 
}
  Person.prototype.age =18
  var p1 = new Person('aaa')
原型链
  一、在javascript中每个对象都会有一个__proto__属性,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么它就会去__proto__里去找这个属性,这个__proto__又会有自己的__proto__,于是就这样一直找下去,这就是原型链的概念。

  二、原型链最终指向 null

  三、原型链的查找规则

    按照原型链依次往下找,有就返回,没有就返回undefined或者报错

  四、用字面量创建原型带来的的问题

    直接加上constructor即可

  五、将局部变量改成全局变量
改变This指向

一、 call()

    1、可以进行函数的调用

    2、可以改变this指向,如果没有参数this指向全局 

    3、可以改变this指向,如果有一个参数,this指向该参数

    4、可以改变this指向,如果有多个参数,this指向第一个参数,其他参数是参数列表                                                 **

二、apply()

    1、可以进行函数的调用

    2、可以改变this指向,如果没有参数this指向全局 

    3、可以改变this指向,如果有一个参数,this指向该参数

    4、可以改变this指向,如果有多个参数,this指向第一个参数,第一个参数必须有,其他参数是数组

三、bind()

    1、不可以进行函数的调用

    2、可以改变this指向,如果没有参数this指向全局 

    3、可以改变this指向,如果有一个参数,this指向该参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值