<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
1.每一个函数function都有一个prototype,称之为 显式原型 属性
2.每一个实例对象都有一个 __proto__,称之为 隐式原型 属性
3.对象的 隐式原型 的值为等于对象的 构造函数 显式原型的值。
也就是所,显式原型属性 和 隐式原型属性 中保存的都是地址值,而且是同一个地址值
4.概括:
- 函数的prototype属性,在定义函数时自动添加,默认是个空的object对象
- 对象的__proto__属性,在创建对象时自动添加,默认值为构造函数的prototype的属性值
- 我们可以直接操作 显式原型 , 不能直接操作隐式原型(ES6之前)
- 通过对象来调用隐式原型对象中的属性时,实例名.属性名。
我们可以看出上述的调用方法和实例调用对象中的属性的方法是相同的,那么当对象中有和该对象中的 隐式原型 相同的属性名
时,是先调用的谁? 是先调用 对象 中的属性,对象中没有才去 隐式对象 中去调用。
-->
<script>
function Fn1(){} //创建一个函数
console.log(Fn1.prototype) //1.每一个函数function都有一个prototype,称之为显式原型
var fun1=new Fn1() //创建Fn1的实例
console.log(fun1.__proto__) //2.每一个实例对象都有一个 __proto__,称之为隐式原型
console.log(Fn1.prototype===fun1.__proto__) //3.对象的 隐式原型 的值为其对象的 构造函数 显示原型的值
Fn1.prototype.test=function(){} //4.3 我们可以直接操作 显式原型
</script>
</body>
</html>
10.显示原型_隐式原型 ——js高级
最新推荐文章于 2023-03-04 21:33:02 发布