constructor属性始终指向创建当前对象的构造函数.
如果对 constructor的指向不是很理解,请先看
http://cxy020.iteye.com/blog/1028100
//兼容ie浏览器测试 var console = console || {}; console.log = console.log || function(a){ alert(a); } //类 function Person(obj){ obj = obj || {}; this.sex = obj.sex || 0; this.age = obj.age || 0; } //原型函数 Person.prototype.say = function(){ console.log("我今年" + this.age); }; //类 function ZhangSan(){ var like = "NV"; //特权函数 this.myLike = function(){ console.log("性别" + this.sex + ",爱好" + like); } } //继承了Person ZhangSan.prototype = new Person({"sex":"男","age":18}); ZhangSan.prototype.myLike = function(){ //这里访问不到 私有变量 like console.log("性别" + this.sex + ",爱好没有"); } //实例化 var zs = new ZhangSan(); //调用特权函数 zs.myLike(); //调用继承的原型函数 zs.say(); //如果要调用ZhangSan的myLike原型函数,则必须先删除特权函数. //因为js的查找链,先会搜索到特权函数. delete zs.myLike; //调用原型函数 zs.myLike(); //给父类添加原型函数 Person.prototype.run = function(){ console.log("跑的还挺快"); } //在原型链直接添加,可以调用 zs.run(); //注意:这里将Person的整个原型链都修改了, //那么所有通过原型继承Person的对象都访问不到look Person.prototype = { //将默认指向object的constructor,指向到Person constructor:Person, look:function(){ console.log("看看这个世界"); } } //会报错 //zs.look(); //那么要如何才能访问到look呢 //zs的constructor指向的Person console.log(zs.constructor == Person); //look在Person新的原型链上.那么通过Person的原型链就能访问到 zs.constructor.prototype.look(); //换一个思路,可以理解为可以通过constructor属性,继承到两个类.
相关推荐
JavaScript constructor 属性在类型检查中的应用 在 JavaScript 中,constructor 属性是一种非常有用的工具,可以帮助我们检查变量的类型。Constructor 属性可以帮助我们解决 typeof 函数无法解决的问题,即无法...
// prototype对象有一个constructor属性,指向BB这个函数。 console.log(b.constructor === BB.prototype.constructor); // true ``` 这段代码说明了`constructor`属性的基本作用: 1. **原型链上的引用**:`...
对象的constructor属性用于返回创建该对象的函数,也就是我们常说的构造函数,除了创建对象,构造函数(constructor) 还做了另一件有用的事情—自动为创建的新对象设置了原型对象(prototype object)
真正的原因是:一个对象的constructor是它的构造函数的prototype.constructor,而每一个函数都有一个prototype,默认情况下,这个prototype有一个constructor属性,指向的是它自己。 我觉得Javascript的设计本意是让...
2. 如何使用constructor属性: 一旦创建了对象实例,我们就可以访问其constructor属性来获取创建该对象的构造函数。在示例中,通过`bool.constructor`就能够获取到Boolean的构造函数。 3. 输出constructor属性: ...
在JavaScript中,constructor属性是一个非常重要的基础概念,它出现在类(Class)和继承(Inheritance)的实现中。constructor属性主要用于识别创建某个对象的构造函数。通常情况下,构造函数的prototype对象会拥有...
prototype对象有constructor属性指向BB这个函数;所以alert(b.constructor==BB.prototype.constructor) //true 这里的“有了”的执行过程是先查看b有没有此属性让后去查看prototype里的属性值,不是简单的A=...
在JavaScript(JS)编程语言中,确定变量或对象的类型是一项基本且重要的任务。这不仅有助于理解代码的行为,还能在调试、数据验证以及实现特定功能时提供帮助。本文将深入探讨四种常用的方法来识别和判断JavaScript...
constructor 属性是 JavaScript 中的一种特殊属性,它返回对创建此对象的数组函数的引用。下面我们来深入浅析 JavaScript 中的 constructor。 constructor 属性是一个非标准的 JavaScript 属性,但是在大多数...
在JavaScript中,constructor属性是对象模型的一个重要部分,它用于指出创建对象的构造函数。在理解了对象模型之后,我们可以更深入地探讨constructor属性的实现原理。 首先,constructor属性可以被看作是对象的...
在 JavaScript 中,几乎所有的数据类型都有一个 constructor 属性,它指向创建这个数据的构造函数。而 prototype 则是函数所特有的属性,它让函数可以被用作构造器来创建实例,同时这些实例可以共享相同的方法和属性...
`person1`和`person2`各自拥有`name`和`age`属性,同时可以访问`sayHello`方法。 除了自定义构造函数,JavaScript还提供了一些内置构造函数,如`Array`、`Object`和`Function`等。例如,`Array`构造函数用于创建...
在JavaScript中,遍历属性、理解`prototype`和掌握继承机制是编程中不可或缺的基本技能。本文将深入探讨这些概念,并通过实例来加深理解。 首先,让我们来看如何遍历JavaScript对象的属性。JavaScript提供了多种...
在JavaScript中,`constructor`属性是一个非常重要的概念,它与对象和类的构造函数紧密相关。构造函数是一种特殊类型的函数,通常用于初始化新创建的对象。当我们谈论`constructor`时,我们指的是一个对象实例的`...
然而,由于JavaScript的动态性,constructor属性是可以被修改的,所以在实际开发中,更推荐使用`Array.isArray()`方法来确定一个对象是否为数组。 此外,Array对象还包含许多其他的方法,如`push()`、`pop()`、`...