<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>