本来打算翻译这篇文章,但是感觉原文才是真正原汁原味的,所以这里也偷偷懒。
之前一直纠结于对象的构造函数,通过阅读Joost Diepenmaat的这篇【Constructors considered mildly confusing】,有了比较明晰的了解。一般来说,对象的constructor其实就是对象的[[Prototype]]的构造函数。
例如函数
function A() {}
function B() {}
function C() {}
B.prototype = new A();
C.prototype = new B();
var c = new C();
console.log(c.constructor === A ); //true
那么c.constructor是什么呢。c.constructor==C.prototype.constructor==B.prototype.constructor==A.prototype.constructor==A,即是函数A。因为c.constructor等于函数C的原型的构造函数,C函数的原型是什么呢——B的对象,B的对象的构造函数是函数B的原型的构造函数,B的原型同样是——函数A的对象,A的对象的构造函数就是函数A。这就是为啥c.constructor 等于 A(需要注意的是,这是新建C时的状况,即使后面修改了部分构造函数的原型,这里的原型链依然是新建C那个时刻的原型链)。
对于instanceof,这个函数的作用不用多说,但是他的实际含义确实很模糊(可能自己的理解不全),这篇文章同样也做了同样的说明,其实他就是检测比较对象的原型链中是否存在比较构造函数的原型。详细请参照【Constructors considered mildly confusing】
题外话,最后发现Mozilla Developer Network 的文章相当不错,感觉有时候比一些书籍更为详细。
引用
分享到:
相关推荐
JavaScript构造函数和原型对象介绍,对于构造函数的创建以及一些简单地介绍,还有就是原型对象对于构造函数的一些补充。
Javascript构造函数是非常强大的,它可能也是Javascript能被充分利用的特点之一。但是如果你想真正的了解Javascript,你还是应该明白构造函数是如何工作的。本文,我们将从三个方面来讲述构造函数。
构造函数就是初始化一个实例对象,对象的prototype属性是继承一个实例对象。本文给大家分享javascript构造函数详解,对js构造函数相关知识感兴趣的朋友一起学习吧
以下是一个构造函数的例子 如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的。 //定义一个构造函数 function People(name,age){ this.name=name; this.age=age; this.dothings=function(){ ...
其中公有方法声明的部分采用的两种方式,在实际应用中一般采取一种方式就可以了,如果两种方式都要采用的话,应注意顺序,防止前面写的方法被清空或覆盖。
本文将介绍javascript构造函数调用方面的案例应用,需要了解的朋友可以参考下
主要介绍了一文秒懂JavaScript构造函数、实例、原型对象以及原型链的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
关于JavaScript构造函数,如今出现了很多JavaScript的框架,例如jQuery、Ext等等这些,这些将JavaScript作为一种面向对象的语言进行编程,那么JavaScript到底是怎么样实现面向对象的一些特征的呢,首先,我们来看看...
javascript构造函数
主要介绍了javascript 构造函数方式定义对象的方法及示例,需要的朋友可以参考下
JavaScript 中的构造函数和其它语言中的构造函数是不同的。通过 new 关键字方式调用的函数都被认为是构造函数。任何JavaScript 函数都可以用做构造函数,构造函数必须使用new 运算符作为前缀来创建新的实例。
主要介绍了javascript组合使用构造函数模式和原型模式的方法,通过一个简单实例分析了javascript构造函数模式与原型模式的使用方法,需要的朋友可以参考下
js播放列表一个Treehouse项目,使用JavaScript构造函数和原型。 在这个包装了Treehouse的“面向对象编程”标志的项目中,我的任务是向所提供的文件中添加功能,以使用JavaScript创建一个简单的(不起作用的)媒体...
对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅。。(哔!)。
JS中的函数即可以是构造函数又可以当作普通函数来...和其他高级语言一样 Javascript 中也有构造函数和 new 运算符,我们知道 new 是用来实例化一个类,从而在内存中分配一个实例对象。 但在 Javascript 中,万物皆对
滑杆 JavaScript构造函数,该函数创建图像滑块并将其添加到网页。 该构造函数使用D3.js,它将允许在将来的版本中进行简单,可自定义的过渡和效果。
在学习构造函数之前我们需要知道我们学习构造函数需要学习什么: 1.什么是构造函数 2.构造函数用来做什么 3.构造函数的执行过程 4.构造函数的返回值 1.所以首先我们需要知道什么是构造函数: 在我看来,构造函数...
用于从文件输入验证图像尺寸的 JavaScript 构造函数。 这依赖于 FileReader。 如果 FileReader 不存在,它将优雅地失败。 这可以与受 Laravel 的 Validator 类启发的一起使用,也可以单独使用。 开始 在dist文件夹...