73 lines
2.1 KiB
HTML
73 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Document</title>
|
|
<script>
|
|
var val=999
|
|
var obj={name:"ming"} // 字面量创建
|
|
function Grand(){
|
|
this.name="root"
|
|
this.pow=2
|
|
this.say=function(){
|
|
console.log("我是根")
|
|
}
|
|
}
|
|
var grand1=new Grand()
|
|
console.log(grand1.__proto__) //grand1 obj 中有个 prototype, 对象里面只能用__proto__ 访问原型(左右两个横线)
|
|
console.log(Grand.prototype) //Grand 函数里面有个 prototype
|
|
// console.log(Grand.__proto__) error写法 函数里面只能用prototype属性访问原型
|
|
|
|
|
|
function f(){
|
|
this.name="father"
|
|
|
|
}
|
|
f.prototype=grand1 //原型指向的只能是实例对象 不能是函数
|
|
f.prototype.val="miku"
|
|
var fa=new f()
|
|
fa.say()
|
|
console.log(fa)
|
|
|
|
var me={}
|
|
me.__proto__=fa
|
|
console.log(me.name)
|
|
console.log(me.val)
|
|
//grand1 => fa =>me :原型链
|
|
|
|
// me.pow
|
|
// me 从me对象中查找pow属性的值
|
|
// |
|
|
// fa me对象中找不到属性时 就会去 上一级 也就是fa对象中找 Pow的值
|
|
// |
|
|
// grand1 fa 对象中也找不到这个属性的话 ,那么就再往上一层 找grand1中的 pow的值
|
|
|
|
// 如grand1中也找不到这个值呢 就结果上来说 结果是Undefined 而且原型链的尽头不是window
|
|
function A(sa){
|
|
this.sa = sa;
|
|
this.hello = function(){console.log("hello")}
|
|
}
|
|
function Aa(saa){
|
|
this.saa = saa;
|
|
|
|
}
|
|
function Aaa(saaa){
|
|
this.saaa = saaa;
|
|
|
|
}
|
|
var z = new A();
|
|
Aa.prototype = z;
|
|
var za = new Aa();
|
|
Aaa.prototype = za;
|
|
var zaa = new Aaa();
|
|
|
|
zaa.hello();
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
</body>
|
|
</html> |