美文网首页Js方法延伸
关于 javascript 的 constructor 理解

关于 javascript 的 constructor 理解

作者: 崩鲨卡拉卡 | 来源:发表于2019-02-20 10:05 被阅读0次
对象的 constructor 属性 可以返回创建该对象的函数, 也就是 构造函数
  • 除了一些特殊对象 其他对象都具备 构造器,
    特殊对象:arguments、Enumerator、Error、Global、Math、RegExp、Regular Expression等

  • 对象中的 constructor属性 指向的函数本身,一般都有内置对象均具有 constructor 。
    如:Array、Boolean、Date、Function、Number、Object、String等。

语法:object.construct
返回值: 对象的 construct 属性 返回创建该对象的 函数的引用

示例说明:

字符串 string 
var str="zhangjian";
alert(str.constructor);
alert(str.constructor === String); // true

输出:
function String() {
    [native code]
}
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
自定义对象
        function pang(){
            this.name="保时捷赛车——庞小杰"
        }
        var Peter=new pang();
        alert(Peter.constructor);
        alert(Peter.constructor=== pang);
输出:
function pang() {  this.name="保时捷赛车——庞小杰"  }
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

通过以上代码我们可以得到两个对象,a,b,他们同为类A的实例。因为A在闭包里,所以现在我们是不能直接访问A的,那如果我想给类A增加新方法怎么办?

var a, b;
        (function () {
            function A(arg1, arg2) {
                this.a = 1;
                this.b = 2;
            }

            A.prototype.log = function () {
                console.log(this.a);
            }
            a = new A();
            b = new A();
        })()
        a.log();
        // 1
        b.log();
        // 1

        // 非原型对象上,用 constructor 构造器 添加方法 和属性
        a.constructor.prototype.log2=function(){
            alert(this.b)
        }
        a.log2();

通过访问constructor就可以了。
或者我想知道a的构造函数有几个参数?

a.constructor.length

相关文章

网友评论

    本文标题:关于 javascript 的 constructor 理解

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