<script>
/*
1、每个函数function都有一个prototype,即显式原型(属性)
2、每个实例对象都有一个__proto__,可称为隐式原型(属性)
3、实例对象的隐式原型的值为其对应的构造函数的显式原型的值
4、总结
*函数的prototype属性:在定义函数时自动添加,默认指向一个空的Object对象
*对象的__proto__属性:创建对象时自动添加,默认值是构造函数的prototype属性值
*能直接操作显式原型prototype,不能直接操作隐式原型__proto__(ES6之前)
*/
// 定义构造函数
// 定义函数时,会自动添加prototype属性,默认指向一个空的Object对象
function Fun(){}
console.log(Fun.prototype) // Object对象
// 创建对象时,会自动添加__proto__属性,默认值为构造函数的prototype属性值
var fun = new Fun()
console.log(fun.__proto__) // Object对象
// 实例对象的隐式原型的值为其对应的构造函数的显式原型的值
console.log(Fun.prototype === fun.__proto__) // true
// 通过prototype添加方法,通过__proto__调用
Fun.prototype.test = function(){
alert('Tom')
}
fun.test()
</script>
JS - 显式原型和隐式原型
最新推荐文章于 2022-11-03 09:39:10 发布