关于javascript的prototype理解

1.prototype是什么

javascript的prototype是javascript的原型。

2.prototype的作用

可以产生可以共享的属性或者方法,产生的实例对象都可以访问得到他。

3.prototype的理解与使用

3.1 当创建一个函数的时候就会自动创建一个 prototype 属性

function Person(){};
console.log(Person.prototype)

在控制台打印出结果如下:
实例
3.2 使用 prototype 往原型里面挂载共享的属性和方法

function Person(){};
// 挂载属性
Person.prototype.name = "张三";
// 挂载方法
Person.prototype.fn = function(){};

在控制台输出的记过如下:
在这里插入图片描述
prototype上挂载的属性和方法,函数和实例都是可以进行访问的

function Person(){};
Person.prototype.name="张三";
Person.prototype.fn = function(){
	console.log("fnfnfnfnfn")
};
//方法进行调用
console.log(Person.prototype.name); // 张三
Person.prototype.fn(); // fnfnfnfnfn
// 实例进行调用
let person1 = new Perosn();
console.log(person1.name); // 张三
person.fn(); // fnfnfnfnfn

操作数组的方法都是挂载到 Array 的原型上面的

console.log(Array.prototype)

在控制台打印如下:
在这里插入图片描述
我们也可以往原型上面自定义自己的属性或者方法用来操作数组:

Array.prototype.aaa = "123123";
let arr = [];
let arr1 = new Array();
console.log(arr.aaa); // 123123
console.log(arr1.aaa); // 123123

3.3 关于 prototype 和 proto 的关系
prototype是javascript的原型属性,proto 是指针只是一个存在栈内存里面的一串地址字符串。

function fnn(){};
console.log(fnn.prototype);

在控制台输出如下:
在这里插入图片描述
可以看到 fnn.prototype 中存在构造函数 constructor会指向其构造函数,这个 proto 就是用来指向的。
用表达式表示为: fnn.prototype.constructor === fnn; // true

function fnn(){};
let a = new fnn();
console.log(a);

在控制台输出如下:
在这里插入图片描述
可以看到 a的__proto__ 指向实例化构造函数的 prototype原型
用表达式表示为: a.proto === fnn.prototype; // true
在这里插入图片描述

参考文章:https://www.cnblogs.com/xiaowin/p/11355404.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值