JavaScript原型到原型链

2021/5/17 14:25:59

本文主要是介绍JavaScript原型到原型链,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

原型(显示原型和隐式原型)

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

核心:实例对象的隐式原型的值为其对应构造函数的显式原型的值

function Fun(){
//内部自动执行语句:this.prototype={};
}

1.每个函数function都有一 个prototype, 定义函数时自动添加,显式原型prototype是一个对象,且默认指向一个空的Object对象

console.log(Fun.prototype);

2.每个实例对象(除了 null )都有一个__proto__属性, 称为隐式原型,这个属性会指向该对象的原型

let obj = new Fun();//内部自动执行语句:this.__proto__=Fun.prototype;
console.log(obj .__proto__);

3.实例对象的隐式原型的值为其对应构造函数的显式原型的值

console.log(obj .__proto__ == Fun.prototype);//true
Fun.prototype.test=function(){
	console.log("在函数的显示原型属性中添加方法");
}
obj.test()//使用隐式原型调用显示原型定义的方法

总结:
实例看隐式原型
函数看显示原型
在这里插入图片描述

原型链

原型链使用来查找属性值的
在这里插入图片描述
1.读取对象的属性值时: 会自动到原型链中查找
2.设置对象的属性值时不会查找原型链,如果当前对象中没有此属性,直接添加此属性并设置其值
3.方法一般定义在原型中,属性一般通过构造函数定义在对象本身上

function Fn() {}

Fn.prototype.a ='AAA';
var fn1=new Fn();
console.log(fn1.a);//AAA

var fn2 = new Fn();
fn2.a = 'BBB';//设置对象的属性值时不会查找原型链,如果当前对象中没有此属性,直接添加此属性并设置其值
console.log(fn1.a, fn2.a)//AAA , BBB

原型中常用的方法

hasOwnProperty

instanceof

  1. instanceof是如何判断的?
  • 表达式: A instanceof B
  • 如果B函数的显式原型对象在A对象的原型链上, 返回true, 否则返回false
  1. Function是通过new自己产生的实例



最后推荐一篇好文章《JavaScript深入之从原型到原型链 #2》



这篇关于JavaScript原型到原型链的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程