JavaScript Object.prototype.constructor属性详解
2016-07-19 13:40
666 查看
任何JavaScript函数都可以用作构造函数,并且调用构造函数是需要用到一个prototype属性的,因此,每个JavaScript函数(ECMAScript5中的Function.bind()方法返回的对象除外)都自动拥有一个prototype属性,这个属性的值是一个对象,这个对象包含唯一一个不可枚举的属性constructor。
constructor
constructor的属性值是一个构造函数
构造函数的原型中预先定义了constructor属性,对象通常继承的constructor均指代他们的构造函数。由于构造函数是类的“公共标识”,因此这个constructor属性为对象提供了类。
改变对象的constructor属性
true, 1 和 “test” 的不受影响,因为创建他们的是只读的原生构造函数(native constructors)
constructor
constructor的属性值是一个构造函数
var o = new Object // 或者 o = {} o.constructor == Object //true,constructor=Object对象 var a = new Array // 或者 a = [] a.constructor == Array//true,constructor=Array对象 var n = new Number(3) n.constructor == Number//true,constructor=Number对象
构造函数的原型中预先定义了constructor属性,对象通常继承的constructor均指代他们的构造函数。由于构造函数是类的“公共标识”,因此这个constructor属性为对象提供了类。
function Tree(name) { this.name = name;//初始化属性 } var theTree = new Tree("Redwood");//使用new关键字调用构造函数创建对象 console.log( "theTree.constructor is " + theTree.constructor );//运行结果如下图:
改变对象的constructor属性
function Type() { };//构造函数 var types = [ new Array, [], new Boolean, true, new Date, new Error, new Function, function(){}, Math, new Number, 1, new Object, {}, new RegExp, /(?:)/, new String, "test" ]; for(var i = 0; i < types.length; i++) { types[i].constructor = Type; types[i] = [ types[i].constructor, types[i] instanceof Type, types[i].toString() ]; }; //循环遍历数组,修改数组元素中对象的constructor属性 console.log( types.join("\n") ); //输出结果如下
true, 1 和 “test” 的不受影响,因为创建他们的是只读的原生构造函数(native constructors)
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- Python动态类型的学习---引用的理解
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子