美文网首页
Javascript constructor 属性详解

Javascript constructor 属性详解

作者: 无欲而为 | 来源:发表于2018-12-13 15:50 被阅读0次

    对象的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)。

    相关文章

      网友评论

          本文标题:Javascript constructor 属性详解

          本文链接:https://www.haomeiwen.com/subject/zjavhqtx.html