原型链与构造函数
来源:互联网 发布:德克软件 编辑:程序博客网 时间:2024/06/15 08:04
首先:声明的函数,是有prototype属性的。但是对象是没有prototype的。
一、函数
console.dir(Foo)
可以看到,有prototype属性和__proto__
属性。- Foo.prototype里的constructor指向Foo自己 ,
__proto__
指向Object.prototype。 - 而Foo.
__proto__
指向Function.prototype
二、Object
console.dir(Object)
可以看到,有prototype属性和__proto__
属性。- Object.prototype里的constructor指向Object,
__proto__
指向null - Object.
__proto__
指向Function.prototype。
三、Function 构造函数
console.dir(Function)
可以看到,有prototype属性和__proto__
属性。- Function.prototype里的constructor指向Function,
__proto__
指向Object.prototype - Function.
__proto__
指向Function.prototype。
四、对象
1、字面量创建对象
- 字面量创建的对象
__proto__
的默认指向Object.prototype。 - 没有prototype属性。
console.log(b.prototype)
结果undefined
2、构造函数创建对象
function F () {} // 方法一:重写prototype F.prototype = { //constructor: F, name: 'liu', method: function () {} } // 方法二:拓展prototype F.prototype.name = 'yong'; F.prototype.method = function () {}; var f = new F(); console.log(f);
- 构造函数创建对象:
__proto__
下有constructor和__proto__
和Foo的prototype定义的属性及方法。 __proto__
下的constructor指向Foo本身。__proto__
下的__proto__
指向Object.prototype。
注意:
方法一:直接重写prototype,如果我不指定constructor,将导致如下图,没有了constructor。
方法二:拓展prototype,保证了constructor的正确指向。
五、附一张图对上面总结
作图工具采用processOn
六、附示例一份和图解
该示例原出处: Dmitry Soshnikov
参考翻译出处: 魏志峰(@JeremyWei)翻译+投稿
function Foo(y) { this.y = y; } Foo.prototype.x = 10; Foo.prototype.calculate = function (z) { return this.x + this.y + z; }; var b = new Foo(20); var c = new Foo(30); b.calculate(30); // 60 c.calculate(40);
0 0
- 原型链与构造函数
- 构造函数与原型
- 原型与构造函数
- 构造函数、原型、原型链
- 面向对象、构造函数、原型与原型链详解
- JS构造函数与原型
- JS构造函数与原型
- JS构造函数与原型
- 构造函数与prototype原型
- js 构造函数与原型模式
- Javascript中的构造函数与原型
- JS----构造函数与原型prototype 区别
- js中构造函数与原型
- JS----构造函数与原型prototype 区别
- JavaScript的原型与构造函数
- 前端基础进阶(九):详解面向对象、构造函数、原型与原型链
- 前端基础进阶(七):详解面向对象、构造函数、原型与原型链
- 关于js中,原型对象,原型链,构造函数,实例之间关系的理解与区别
- 文章标题
- 杭电ACM 1010 Tempter of the Bone
- matlab数据分类 画直方图
- 关于多id值查询的见解
- 奇异值分解(SVD)原理详解及推导
- 原型链与构造函数
- 六大排序算法的总结
- HDU 3038 How Many Answers Are Wrong 带权并查集
- PowerDesigner对MySQL 进行反向工程
- 杭电 ACM 1007 Quoit Design
- IntelliJ IDEA 中的版本控制介绍(下)
- 物料批次特性值取法
- CentOS7安装Oracle 11gR2 图文详解 3
- 利用递归的方法实现字符串倒序