原型: prototpye
var A = function() {
this.x = 1;
this.getY = function() {
return 3;
}
this.getX = function() {
return this.x;
}
};
A.prototype.getX = function() {
return 4;
}
A.prototype.x = 4;
var o = new A();
var o1 = new A();
调用o.getX 返回 1 当function中没有getX方法时,返回 4; function中的方法和属性是私有的,原型重定义的是共有的 可用下图所示:
这样的话:基于JS面向对象,属性一般是私有,方法可以放在原型中创建,不过在原型中创建的时候,调用属性时需要用this.属性;
原型链 _proto_
proto相当于o的一个私有属性,不过里面有一个指向,指向了prototype
可以通过看代码的数据结构
对于JavaScript而言,每个对象创建的时候,都默认有一个 proto
这个proto中存储了prototye中定义的属性和方法,然后proto 中又有一个proto 这就形成了一个原型链
当我proto最后指向了 object.proto 。object.proto 中的proto 指向了null 然后结束 相当于java的链表 List;