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属性[文].pdf
javascript new后的constructor属性.docx
对象的constructor属性用于返回创建该对象的函数,也就是我们常说的构造函数,除了创建对象,构造函数(constructor) 还做了另一件有用的事情—自动为创建的新对象设置了原型对象(prototype object)
真正的原因是:一个对象的constructor是它的构造函数的prototype.constructor,而每一个函数都有一个prototype,默认情况下,这个prototype有一个constructor属性,指向的是它自己。 我觉得Javascript的设计本意是让...
prototype对象有constructor属性指向BB这个函数;所以alert(b.constructor==BB.prototype.constructor) //true 这里的“有了”的执行过程是先查看b有没有此属性让后去查看prototype里的属性值,不是简单的A=...
constructor属性始终指向创建当前对象的构造函数。比如下面例子:比如下面例子: 代码如下: // 等价于 var foo = new Array(1, 56, 34, 12); var arr = [1, 56, 34, 12]; console.log(arr.constructor === Array); /...
本文实例讲述了js核心基础之构造函数constructor用法。分享给大家供大家参考,具体如下: 在js中,可以利用构造函数来创建特定类型的对象,其中,有一些原生的构造函数,Object、Array、等等,所以,当type of ...
constructor 属性返回对创建此对象的数组函数的引用。本文给大家介绍JavaScript中的constructor ,需要的朋友参考下吧
一直没弄清楚JavaScript中的prototype和constructor属性,今天看了看书,总算有点眉目了
本文实例讲述了js构造函数constructor和原型prototype原理与用法。分享给大家供大家参考,具体如下: 所有引用类型(函数,数组,对象)都拥有__proto__属性(隐式原型) 所有函数拥有prototype属性(显式原型)(仅...
JavaScript中的几种继承方法示例 1.原型链继承 ...原型对象上有一个constructor属性,指向创建该对象的构造函数,该属性不可枚举。 var obj = {}; obj.__proto__ === Object.prototype; //true console
这里有一点需要注意的是,每个函数都有一个prototype属性,这个prototype的constructor指向这个函数,这个时候我们修改这个函数的prototype时,就发生了意外。如 function Person(name,age){ this.name = name; ...
构造器模式简单描述(看图): 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载...Javascript不支持类的情况下对象与Constructor,通过new关键字实例化一个对象,代码大概是这样的 funct
prototype 属性的功能: 所有JavaScript 内部对象都有只读的prototype 属性。可以为内部对象的原型添加功能,但该对象不能被赋予不同的原型。 然而,用户定义的对象可以被赋给新的原型。 constructor 属性的作用: ...
在理解了'对象模型'后,我们就可以看一下constructor属性是如何实现的.