constructor

constructor

var x = 3;
x.constructor; // function Number () { } , 是一个函数
typeof (x.constructor); // function
x.constructor == Number; // true

为什么x会有constructor属性。因为每一个构造函数原型都会生成constructor属性,且这个属性指向构造函数。而实例对象是继承了原型的属性和方法的

用法:判断给定对象为什么类

function type(x) {
    if (x == null) return ""; //Null 和 undefined 没有构造函数
    switch (x.constructor) {
        case Number: return "Number"; //处理原始类型
        case String: return "String"; //处理原始类型
        case Date: return "Date"; //处理内置类型
        case Complex: return "Complex"; //处理自定义类型
    }
}
  • 不足
    1.页面多个框架页面中,创建的两个数组继承自两个完全相同却相互独立的原型对象,因而其中一个框架页面中的数组对象不是另外一个框架页面中Array()构造函数的实例。(instanceof也如此)
    2.此外,不是每个实例都有constructor属性,该属性是继承自原型对象,原型对象可能没有该属性。或者,实例原型更改后并没有指向正确的构造函数,导致不正确。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 普通创建对象和字面量创建对象不足之处:虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有...
    believedream阅读 2,453评论 2 18
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 1,461评论 3 12
  • 本章内容 理解对象属性 理解并创建对象 理解继承 面向对象语言有一个标志,那就是它们都有类的概念,而通过类可以创建...
    闷油瓶小张阅读 892评论 0 1
  • 申明,我想你了 ,你想我吗 ? 你就这样离开我的世界了,不会再出现了吗?如果有一天你玩简书,我希望你可以看到,我...
    申冰冰阅读 355评论 0 2
  • 早上照例6点半起床。蒸了昨天去母亲那儿拿的饺子,味道不错,想起教了母亲跪姿俯身后抬腿的练习,应该对改善她的腿部有帮...
    francoMGe阅读 258评论 0 0