04_原型链_属性问题

<body>
<!--
1. 读取对象的属性值时: 会自动到原型链中查找
2. 设置对象的属性值时: 不会查找原型链, 如果当前对象中没有此属性, 直接添加此属性并设置其值
3. 方法一般定义在原型中, 属性一般通过构造函数定义在对象本身上

原型链用来查找值,不是用来赋值的,查找不到就是undefined,查找不到变量会报错


A instanceof B


一个对象的原型对象很可能有多个 , A很可能Instanceof很多个,A原型链的顶部是Object.prototype,__proto__


函数本质上也是实例对象,所以也是有隐式原型


所有对象(实例对象)的隐式原型指向Object的显示原型,所有我们定义的对象,它的原型对象都是Object的实例,有个例外,就是Object自己



--> <script type="text/javascript"> function Fn() { } Fn.prototype.a = 'xxx' var fn1 = new Fn() console.log(fn1.a, fn1) var fn2 = new Fn() fn2.a = 'yyy' console.log(fn1.a, fn2.a, fn2) function Person(name, age) { this.name = name this.age = age } Person.prototype.setName = function (name) { this.name = name } var p1 = new Person('Tom', 12) p1.setName('Bob') console.log(p1) var p2 = new Person('Jack', 12) p2.setName('Cat') console.log(p2) console.log(p1.__proto__===p2.__proto__) // true </script> </body>

 

posted @ 2019-11-08 14:29  燕子fly  阅读(172)  评论(0编辑  收藏  举报