1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > js_高级_对象 面向对象 构造函数 实例对象 原型 原型链

js_高级_对象 面向对象 构造函数 实例对象 原型 原型链

时间:2024-07-09 02:20:57

相关推荐

js_高级_对象 面向对象 构造函数 实例对象 原型 原型链

1、什么是对象

汽车不是对象是是一类事物,一辆汽车是对象。

2、什么是面向对象

3、面向对象的特点

案例来理解 面向过程 和 面向对象---打印出学生的成绩表

面向过程:如何做这件事情 ,把事情拆成一个个的,然后一步步做?

面向对象:考虑这件事情可以抽象出哪些对象?对象有哪些成员---不着急先去做这件事情

注意:es6开始已经支持类了

4、如何创建对象

在面向对象的过程中我们要创建对面,创建对象的方式

1、字面量

2、new Object()

3、工厂函数方式

4、构造函数---函数名首字母大写

new 之后发生了什么

5、判断对象的具体类型

6、对象的静态成员和实例成员

7、构造函数的原型和三角关系

解决方式2:构造函数的原型

所有的构造函数内部都有一个属性叫原型(原型对象)---原型的本质就是一个普通的对象,所以可以动态的添加成员

对象可以访问所有原型对象的成员

占的是同一个内存空间,地址是相同的,地址指向sayHi

!!!我们通过原型对象添加的成员(属性和方法)和我们在构造函数中添加的成员(属性和方法)有什么区别呢?

认识:proto属性 ---实例化的对象的这个__proto__属性里面的成员就是在构造函数原型对象上添加的成员

所有的构造函数内部都有一个属性叫原型(原型对象)---原型的本质就是一个普通的对象,所以可以动态的添加成员

所有的对象都有一个__proto__属性

1、构造函数的原型(原型对象)---所有的构造函数都有原型prototype,实例化出的对象可以直接访问原型上的成员(所以一般把公共的方法放在原型上,节约内存优化性能);

2、对象的proto属性---所有的对象都有proto属性,proto属性和该对象的构造函数的原型相等,即proto属性又指向了原型对象;

为什么对象要有proto这个属性呢?(为了对象可以直接访问原型中的成员)

因为对象可以访问到构造函数中的原型对象的成员,所以对象中要有一个属性去引用(指向)prototype,即proto === prototype

3、constructor属性(构造函数/构造器)---是原型中的一个属性,记录了创建该对象的构造函数 ;

----以上3者的作用和联系

原型对象的proto又指向谁呢?

8、原型链

充分运用了原型对象

所以的对象都有proto

proto又指向原型对象

这就是一个往上的链

a、理解 var obj = new 构造函数 () 后发生的事情,就可以理解哪些成员是对象自身的而不是原型上的。

new 构造函数 () 发生的事情:

1、创建一个空对象 2、this指向这个空对象

3、调用构造函数,执行构造函数里面的代码(所以对象自身的成员就是在构造函数中定义的成员) 4、返回刚刚创建出的那个对象给obj。

b、对象访问成员是(就近原则):先找对象自身有没有这个成员,没有的话就往原型上找,原型也是对象,那又可以往原型对象的原型上找。。。以此类推找到最顶端

c、原型链的运用

d、对象中设置属性和读取属性的区别

e、使用原型的注意点

构造函数才有prototype原型属性

a、注意点1:

1、设置对象的方法时:方法一(不方便,代码重复)

2、设置对象的方法时:方法二(注意要重新设置constructor属性)

b、注意点2

9、原型对象的一个应用:扩展内置对象中的方法

比如:想求数组中所有偶数的和

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。