前端进阶(随手记)------原型链解析(__proto__和prototype的区别)
来源:互联网 发布:杜月笙评价知乎 编辑:程序博客网 时间:2024/05/22 03:21
一 基础知识:
在JS中,万物皆对象,方法(Function)是对象,原型也是对象(简称原型对象)。以下是基本概念:
1 函数对象:函数也是对象,简称函数对象。
2 原型:函数具有的一个属性叫做原型,这个属性指向一个另一个对象,(构成原型链的基础)。原型是属性(又称原型属性)也是是对象;原型的本质是对象。
3 原型对象:原型也是对象,简称原型对象。相当于你妈。
4 构造函数:构造函数就是啪啪啪啪,就是造人。产生下一代。
5 实例:啪啪啪之后,生出的人是实例。相当于是你。
6 _ proto _, 也称隐式原型,也可以写作[[prototype]],每个对象(包括对象和函数)都存在这个原型。其作用是:构成原型链。
7 prototype ,也称显示原型,是函数特有的属性。显式原型的作用是:用来实现基于原型的继承与属性的共享。
特殊:(1)Object的显示原型是Object .prototype(凭空出来的) 、Function的显示原型是Function .prototype。
二 指向关系
1 : 隐式原型(_ proto _)指向定义:隐式原型指向创建这个实例对象(相当于你)的函数(相当于你妈)的显式原型(prototype)。
备注a:(因为显示原型是对象,所以又可以说隐式原型指向原型对象)。
备注b:更直接一点,就是找你妈的子宫。
备注c: 由于你可能是(1)你妈和你爸啪啪啪来的;(2)你把的精子和其他女人的卵子经过试管得到的;(3)你是抱养来的。所以寻找你妈就有三种方式。
(第一种情况1:这个对象是通过对象字面量构造出来的。对象(person_1)的_ proto _指向Object .prototype
var person1 = { name: '张三', sex: 'male' };
(第二种情况2:这个对象是由构造函数构造出来的。实例对象(person_2)的_ proto _指向Person .prototype
function Person(name,sex){ this.name=name; this.sex=sex; }var person_2 = new Person("李四",male);
(第三种情况3:这个对象是由函数Object.create构造的。实例对象(person_3)的_ proto _指向person00 .prototype
var person00 = {name: 'cyl', sex: 'male' };var person_3 = Object.create(person00);
2 :显示原型的指向定义:是以当前函数作为构造函数构造出来的对象的原型对象,(显示原型指向函数的原型对象)。 `
function Foo() {}
var foo = new Foo();
console.log(foo.prototype);// undefined
网很多讲的多是隐式原型, 显示原型待研究,后续补上………….
3:介于本人技术有限,很多知识只是了解皮毛,放上大牛的文章链接:js中proto和prototype的区别和关系?:https://www.zhihu.com/question/34183746
JavaScript 内置对象与原型链结构:https://zhuanlan.zhihu.com/p/22181782
- 前端进阶(随手记)------原型链解析(__proto__和prototype的区别)
- 阐述JS中原型链及prototype和__proto__的区别
- prototype和__proto__的区别
- 前端进阶(随手记)------undefined和null的区别
- javascript 原型链详解 prototype和__proto__
- Javascript原型(prototype)和原型链(__proto__)
- js 原型链 __proto__ prototype
- 原型prototype和隐式原型__proto__
- js prototype、__proto__的区别及使用场景及原型链的说明
- JavaScript-原型链、prototype和__proto__属性详解
- 学习总结--JS中__proto__和prototype的关系以及原型链的理解
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- Object与Function的理解,原型链,prototype与__proto__
- 理解js中的原型链,prototype与__proto__的关系
- javascript中的原型链,prototype与__proto__的关系
- 理解js中的原型链,prototype与__proto__的关系
- About Face 二
- VS2010 VC Project的default Include设置
- DispatcherServlet
- 《机器学习笔记》-环境配置
- MVC, MVP, MVVM
- 前端进阶(随手记)------原型链解析(__proto__和prototype的区别)
- IOC + 容器
- C# new override
- 机器学习中的超参数(Hyperparameters in machine learning)
- VS error LNK2019: 无法解析的外部符号 解决方案之一
- is
- DI
- Spring框架
- C# using