原型笔记(一)
Person.prototype.name = "sunny"; function Person () { } var person = new Person(); Person.prototype = { name : "cherry" }
Person的name最终为“sunny”,原因如下:
构造函数生成时,会在函数中隐式:
function Person () { var this = {__proto__:Person.prototype} }
此时name为“sunny”已被储存在__proto__中
再更改
Person.prototype = { name : "cherry" }
并不影响__proto__,因此Person.name输出为sunny。
整个过程简单举例就如下:
Person.prototype = {name = "a"}
__Proto__ = Person.prototype;
Person.prototype = {name = "b"}
再简化概念就如下:
var a = 1; var b = a; a = 2; console.log(b);
b必然是1
A instanceof B 判断的是,A对象 是否是 B对象构造出来的,如果是就返回true 例如
function Person () {}; var person = new Person(); person instanceof Person; //返回true
但真正更加细节的说法是:判断A对象的原型链上,是否有B的原形
因为在上方代码中, [] instanceof Object 也可直接返回true。

浙公网安备 33010602011771号