《JS高级程序设计》--对象的属性和方法

来源:互联网 发布:童诗白和康华光 知乎 编辑:程序博客网 时间:2024/06/06 08:59

在JS中所有的对象都由类Object继承而来。虽然一些专用的类,如内部的类String类或者用户自己定义的Complex类都定义了自己的方法和属性,但是所有对象,无论它的类是什么,都支持Object类定义的属性和方法。由于这些属性和方法的一般性,使得他们具有特殊的重要性。


constructor属性

从JS1.1开始,每个对象都具有constructor属性,它引用的是用来初始化该对象的构造函数。例如,如果用构造函数Complex()创建了一个对象o,那么属性o.constructor引用就是Complex;

var o  = Complex(1,2);o.constructor == Complex;  //值为true;
当然并不是每个Complex对象(后者其他任何类型的对象)都具有自己唯一的constructor属性。相反,这个属性是从原型对象继承来的。JS会为我们定义的每一个构造函数都创建一个

原型对象,并且将那个对象赋给构造函数的prototype属性。原型对象初始时是非空的。在原型对象创建之初,它包含了一个constructor属性,用来引用构造函数。也就是说,如果有一个函数f,

那么属性f.prototype.constructor就总等于f(除非将它设为特别的值)。

但是并不能保证construtor属性总是存在的,例如,一个类的创建者可以用一个全新的对象来替换构造函数的原型对象,而新对象可能不具有有效的constructor属性。


以上是接上一篇没有看完的一部分,每天都能记录一点,慢慢地提高自己的技术,扩展自己的知识面!