原型和原型链

一、构造函数和原型对象

1、构造函数:

(1)作用:用于创建对象,初始化对象的属性

注意:通常把用构造函数创建对象的过程称为类的实例化,对象就是类的实例

2、构造函数的成员或类的成员

(1)什么是成员?类的成员包括属性、方法(行为),通常将属性称为成员变量,把方法(行为)称为成员方法(成员函数)

(2)成员变量又称为实例变量:用类或构造函数创建的对象都有相同的属性和方法

(3)静态成员:通过构造函数名或类名直接访问的成员。不属于任何对象,为类的所有对象(实例共享的)

静态成员也称为类成员

(4)构造方法和类的区别:

a、构造函数中定义的方法,本质是属性,需要占用存储空间

b、在类中定义的方法,不是属性,不需要占用存储空间。即在创建类的对象的过程中,只给对象的属性分配存储空间,对象的方法不占空间,因此节省了内存空间。

3、原型对象:

(1)每个构造函数都存在一个原型对象,可以通过构造函数的prototype属性访问

a、构造函数的原型对象:是object类型,通过prototype属性可以访问到

b、作用:通过原型对象可以给构造函数增加新的功能,这些新的功能可以共享给用构造函数创建的所有对象

(2)对象的原型对象:js中每个对象都有一个原型对象,通过 proto 属性来获取

(3)实例对象与原型对象的关系

 

(4)对象的构造函数:通过对象的原型对象来获取。在对象的原型对象有constructor属性,代表了对象的构造函数

示例:用赋值方式修改原型对象为新的对象,就无法访问构造函数。

(5)构造函数、原型对象和实例对象之间的关系

(6)原型链:

a、通过构造函数的prototype属性找到构造函数的原型对象,通过构造函数的原型对象的constructor找到构造函数

b、通过构造函数创建实例对象,然后通过实例对象的 _proto _属性可以找到对象的原型对象,也可以通过对象的原型对象的constructor找到构造函数

把上面两种找原型对象和构造函数的过程称为原型链

(7)原型对象的原型对象:原型对象也是一个对象,那么它也有原型对象

function Person(){
    this.sayHello = function(){
        console.log("Hello Woniu!");
    }
}
//输出Person的原型对象
console.log('Person的原型对象:',Person.prototype) //constructor ƒ Person()
//输出Person的原型对象的原型对象
console.log('Person的原型对象的原型对象:',Person.prototype.__proto__)

(8)原型链结构特点

a、 每个构造函数都有一个prototype属性指向原型对象。

b、原型对象通过constructor属性指向构造函数。

c、通过实例对象的 _ _ proto _ _ 属性可以访问原型对象。

d、Object的原型对象的 _ _ proto _ _ 属性为null。

(9)JavaScript中成员(属性)的查找机制

a、首先查找对象中有没有成员(属性)

b、如果没有找到,就继续查找原型对象的原型对象

c、如果直到最后都没有找到,则返回undefined。

二、this的指向问题

1、在构造函数内部this指向新创建的对象

2、直接通过函数名调用函数时,this指向的是全局对象window。

3、如果将函数作为对象的方法调用,this将会指向该对象

三、javascript中的错误处理

1、使用try—catch进行处理

执行过程:

(1)若try{}中的代码出现了错误,js会根据错误的类型,生成错误对象,然后将该错误对象抛出去

(2)catch会接收try抛出的错误对象,然后对象错误进行处理

(3)若try{}中的代码出现了错误,try{}中余下的代码就不执行,转到catch下执行

(4)最后执行try—catch结构之外的代码

 2、常见的错误类型

 (1)Error:表示普通错误,其他的错误对象都是从该对象派生而来

 (2)RangeError:数值超出有效范围

 (3)ReferenceError:引用一个不存在的变量

 (4)SyntaxError:语法错误

 (5)TypeError:类型错误

3、throw:是JavaScript的关键字,用于在try{}中抛出错误对象

四、查找算法

1、顺序查找:按数组或集合中元素的存放顺序依次操作(按顺序依次比较每个元素)

2、折半查找(二分法查找)

(1)前提条件:被查找的集合或数组必须是有序的

(2)每次查找时先和被查找区间的中间元素进行比较,若大于中间元素,则继续在被查找区间的右边的区间中找,若小于中间元素

则在被查找区间的左边的区间中查找,如此循环直到查找结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地狱三头猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值