JavaScript中constructor和prototype属性
2017-04-09 11:30
495 查看
JavaScript中,无论什么时候,只要创建了一个函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向了该函数的原型对象,在默认情况下,所有的原型对象都会自动获得一个constructor属性,该属性是一个指针,指向prototype所在的函数。
我们可以通过constructor找到构造函数,实际上是因为,该对象继承的构造函数的原型对象,通过调用原型对象中的construction指针找到了prototype指针所在的函数,也就是该对象的构造函数。
当我们重写整个原型对象的时候该原型对象就变成了完全不同的另一个对象,幸运的是,我们可以通过直接给constructor赋值来指定该指针的值,但是构造函数创建的对象中的prototype指针却没办法指向新原型了
贴代码:
我们可以通过constructor找到构造函数,实际上是因为,该对象继承的构造函数的原型对象,通过调用原型对象中的construction指针找到了prototype指针所在的函数,也就是该对象的构造函数。
当我们重写整个原型对象的时候该原型对象就变成了完全不同的另一个对象,幸运的是,我们可以通过直接给constructor赋值来指定该指针的值,但是构造函数创建的对象中的prototype指针却没办法指向新原型了
贴代码:
function Person(){}; var friend=new Person(); alert(friend.__proto__===Person.prototype); //true 表示friend的__proto__指向的正是构造函数的原型对象 var tmp=Person.prototype; alert(friend.__proto__===Person.prototype); //true 先将原生对象保存 Person.prototype={ constructor:Person, //强制让原型的constructor指针指向原构造函数。 name:'abc', age:100, job:'def' }; alert(friend.name); //undefined alert(friend.__proto__===Person.prototype); //false friend中的__proto__指针指向的不是现在的原型对象 alert(friend.__proto__===tmp); //true 说明friend中的__proto__指针指向的是原来的原型对象 //__proto__连接存在于实例与构造函数的原型对象之间,而不是实例与构造函数之间
相关文章推荐
- javascript 对象及原型继承有关的属性:constructor、prototype、isPrototypeOf、instanceof、in 、hasOwnProperty 等等
- JavaScript中几个重要的属性(this、constructor、prototype)介绍
- JavaScript中几个重要的属性(this、constructor、prototype)
- 构造函数对象[置顶] 揭开Javascript属性constructor/prototype的底层原理
- Javascript属性constructor/prototype的底层原理
- JavaScript中几个重要的属性(this、constructor、prototype)介绍
- JavaScript中几个重要的属性(this、constructor、prototype)
- JavaScript中几个重要的属性(this、constructor、prototype)介绍
- JavaScript---对象学习(一)object对象、string对象、javaScript的constructor属性和prototype属性
- 【JavaScript】(6)Object、String、Array、Date对象的方法、属性(constructor、prototype)
- JavaScript Object.prototype.constructor属性详解
- Javascript属性constructor/prototype的底层原理
- 揭开Javascript属性constructor/prototype的底层原理
- javascript 对象及原型继承有关的属性:constructor、prototype、isPrototypeOf、instanceof、in 、hasOwnProperty 等等
- javascript 中的 prototype和constructor属性的使用(constructor属性始终指向创建当前对象的构造函数,每个函数都有一个默认的属性prototype,而这个prototype的constructor默认指向这个函数)
- JavaScript判断变量类型:typeof函数与constructor属性异同
- JavaScript:prototype属性使用说明
- JavaScript:prototype属性使用说明【转】
- javascript 中的constructor和prototype图
- javascript 中的constructor和prototype图