Javascript constructor 属性详解

对象的constructor属性-------返回--------> 创建该对象的构造函数------的引用

-1. 在js 中,每个具有原型的对象,都会自动获得---constructor 属性.
-2 除了arguments、Enumerator、Error、Global、Math、regexp、Regular Expression、这些特殊的对象之外,其他所有的javascript 内置对象都有constructor 属性.例如: Array,Date,Boolean,Function,Number,Object,String

语法

Object.constructor

返回值

创建该对象的构造函数的引用

示例&&说明

[native code] : 表示这是javascript的底层代码的实现,无法显示 代码的细节.

var str = "张三";
alert(str.constructor); // function String() { [native code] }
alert(str.constructor === String); // true
 
// 数组:Array()
var arr = [1, 2, 3];
alert(arr.constructor); // function Array() { [native code] }
alert(arr.constructor === Array); // true
 
// 数字:Number()
var num = 5;
alert(num.constructor); // function Number() { [native code] }
alert(num.constructor === Number); // true
 
// 自定义对象:Person()
function Person(){
    this.name = "CodePlayer";
}
var p = new Person();
alert(p.constructor); // function Person(){ this.name = "CodePlayer"; }
alert(p.constructor === Person); // true
 
// JSON对象:Object()
var o = { "name" : "张三"};
alert(o.constructor); // function Object() { [native code] }
alert(o.constructor === Object); // true
 
// 自定义函数:Function()
function foo(){
    alert("CodePlayer");
}
alert(foo.constructor); // function Function() { [native code] }
alert(foo.constructor === Function); // true
 
// 函数的原型:bar()
function bar(){
    alert("CodePlayer");
}
alert(bar.prototype.constructor); // function bar(){ alert("CodePlayer"); }
alert(bar.prototype.constructor === bar); // true


为了将实例的构造器的原型对象暴露出来, 比如你写了一个插件,别人得到的都是你实例化后的对象, 如果别人想扩展下对象,就可以用 instance.constructor.prototype 去修改或扩展原型对象


  1. 在一个类中只能有一个名为 “constructor” 的特殊方法。 一个类中出现多次构造函数 (constructor)方法将会抛出一个 SyntaxError 错误。

2.在一个构造方法中可以使用super关键字来调用一个父类的构造方法。
3.如果没有显式指定构造方法,则会添加默认的 constructor 方法
4.如果不指定一个构造函数(constructor)方法, 则使用一个默认的构造函数(constructor)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,721评论 0 21
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 5,313评论 3 12
  • 面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的慨念,而通过类可以创建任意多个...
    threetowns阅读 4,359评论 0 4
  • 普通创建对象和字面量创建对象不足之处:虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有...
    believedream阅读 7,152评论 2 18
  • 搞清楚自己的核心目的是什么 跟领导沟通并确认清楚 负责的事要实时跟进 抓住领导想要的重点,不要瞎掺和 做事要讲究效...
    师悦阅读 1,688评论 0 0

友情链接更多精彩内容