constructor
程序员文章站
2024-03-23 19:25:58
...
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属性,该属性是继承自原型对象,原型对象可能没有该属性。或者,实例原型更改后并没有指向正确的构造函数,导致不正确。
推荐阅读
-
constructor
-
处理Vue is a constructor and should be called with the `new` keyword
-
javascript中的_proto_、constructor和prototype详解
-
javascript Prototype constructor的理解
-
typeof、instanceof、class、constructor
-
The constructor Date() is undefined
-
JS——Constructor(构造器)模式
-
帮你轻松理解js原型链,__proto__,prototype,constructor
-
js之prototype、__proto__、constructor之间的关系
-
constructor, prototype, __proto__ 详解