Javascript prototype 原型

219 阅读1分钟

从Object派生出来的对象,可以继承Object.prototype的内容,不能继承Obect的内容

var person2 = Object.create(person1);

打印person2.__proto__就会返回person1, person2就是用person1作为其原型对象

函数会有属性,而且有默认的原型属性func.prototype,可以用new创建一个函数的实例化对象

定义了函数dosomething,然后往其属性prototype里面添加一个属性foo,设置foo的值为bar,可以看到下面打印出来的dosomething.prototype是这样的:

new一个函数dosomething的实例化对象ins,再给其增加一个属性prop,打印ins

可以看到ins._proto_就是dosomething.prototype

实例化对象会继承原型对象的constructor,这个constructor指向原型对象的构造函数

MDN:一种极其常见的对象定义模式是,在构造器(函数体)中定义属性、在 prototype 属性上定义方法。如此,构造器只包含属性定义,而方法则分装在不同的代码块,代码更具可读性

MDN:理解对象的原型(可以通过Object.getPrototypeOf(obj)或者已被弃用的__proto__属性获得)与构造函数的prototype属性之间的区别是很重要的。前者是每个实例上都有的属性,后者是构造函数的属性。

参考资料:

developer.mozilla.org/zh-CN/docs/…