理解原型和原型链

来源:互联网 发布:mysql datetime 减法 编辑:程序博客网 时间:2024/05/22 00:49

原型: 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;
这里写图片描述

原创粉丝点击