javaScript原型理解

参考资料

所有 JavaScript 对象都从原型继承属性和方法

1、对象的创建

在 JavaScript 中,几乎“所有事物”都是对象。
布尔是对象(如果用 new 关键词定义)
数字是对象(如果用 new 关键词定义)
字符串是对象(如果用 new 关键词定义)
日期永远都是对象
算术永远都是对象
正则表达式永远都是对象
数组永远都是对象
函数永远都是对象
对象永远都是对象
所有 JavaScript 值,除了原始值,都是对象。原始值指的是没有属性或方法的值。

在js中,创建对象有两种方法:对象字面量和使用new表达式

2、什么是原型

定义:原型是 Function 对象的一个属性,它定义了构造函数创建对象的公共祖先。通过该构造函数创建的对象可以继承该原型的属性和方法。原型也是对象。

通过构造函数创建对象:
function Person(name) {
this.name=name;
}
var person = new Person(“张三”);
Person 就是一个构造函数,我们使用 new 创建了一个实例对象 person。

每个函数都有一个 prototype 属性
每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型"继承"属性。

prototype

prototype是Function 对象才会有的属性
function Person() {}
Person.prototype.name = ‘张三’;
var person = new Person();
console.log(person .name) // 张三

在这里插入图片描述

proto

每一个JavaScript对象(除了 null )都具有的一个属性,叫proto,这个属性会指向该对象的原型
function Person() {}
var person = new Person();
console.log(person.proto === Person.prototype); // true
在这里插入图片描述
通过构造函数创建的实例,它的_proto_属性指向的是该构造函数的原型。

constructor

每个原型都有一个 constructor 属性指向关联的构造函数 实例原型指向构造函数
function Person() {
}
var person = new Person();
console.log( Person.prototype.constructor===Person);
console.log(person.constructor === Person);
在这里插入图片描述
我们进行实例属性或方法查询时,首先对自身拥有的属性或方法进行查找,如果未查到,便会从原型中查找也就是 Person.prototype,直到查到结果为止。

原型链
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值