函数中的prototype

prototype(原型)一直都是我非常想了解的东西 , 这东西比较高级,涉及到js的原理, 今天学习了函数中的原型对象, 分享一下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
<script>
/**
* 1.函数的prototype属性
* 每个函数都有一个prototype属性,它默认指向一个 object 空对象(即原型对象)
* 原型对象中都有一个 constructor, 它指向的当前对象 !
*
* 2.给原型对象添加属性(一般都是方法)
* 作用: 说明所有实例自动拥有原型对象中的属性方法
*/
window.onload = function () {
function f() {
console.log('fun f')
}

console.log(f.prototype)
// 给函数对象添加方法
f.prototype.addFun = function () {
console.log('addFun()')
}

// 判断constructor是否指向当前对象
console.log(f.prototype.constructor === f) //true
console.log(Date.prototype.constructor === Date) //true


// 我们可以实例化原型
let newFun = new f()
// 调用原型方法
newFun.addFun()
// 打印出addFun()
// 说明函数中的所有实例对象自动拥有原型中的属性方法!
}
</script>


</html>

image

图中的type是一个函数

总结:函数有一个prototype属性 , 指向一个object空对象(即原型对象!!!), 原型对象都拥有 constructor 属性, constructor又指向了当前的对象 (构造函数与原型对象有相互引用的关系)
分享到