介绍
本文是在学习JS所做的学习笔记,所有笔记内容请看:JS学习笔记
原型对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
/*
创建一个构造函数
*/
function MyClass(){
}
// 向Myclass的原型中添加一个name属性
Myclass.prototype.name='我是原型中的名字'
var mc=new Myclass();
mc.age=18;
使用in检查对象中是否含有某个属性时,如果对象中没有但是原型
中有,也会返回true
console.log('name' in mc) //返回true
可以使用对象的hasOwnProperty() 来检查对象自身中是否含有改属性
使用改方法只有当对象自身含有属性时,才会返回true
console.log(mc.hasOwnProperty('hasOwnProperty'));// 输出false
也是输出false,说明原型对象中也没有hasOwnProperty
console.log(mc.__proto__.hasOwnProperty('hasOwnProperty'))
原型对象也是对象,所以原型对象也有原型对象。
当我们使用一个对象的属性或者方法时,会先在自身中寻找,
自身中如果有,则直接使用
如果没有则去原型对象中寻找,如果原型对象中有,则使用
如果没有则去原型的原型中寻找,直到找到Object对象的原型
Object对象的原型没有原型,如果在Object中依然没有找到,则返回
undefined
// 如下为获取原型的原型
console.log(mc.__proto__.__proto__)// 输出object
// hasOwnProperty在原型的原型中,如下输出true
console.log(mc.__proto__.__proto__.hasOwnProperty('hasOwnProperty'))
// 如下,在自己的原型对象中查找,如果没有则去object原型中查找
// 在Object的原型中没有原型存在(Object的原型的原型为null),输出null
console.log(mc.__proto__.__proto__.__proto__)
</script>
</head>
<body>
</body>