constructor function Dog(name) { this.name = name;}Dog.prototype = { constructor: Dog, shout: function() { /* ... */ }, run: function() { /* ... */ }};constructor: Dog, 这个的作用是什么 求解析. 应该是维护原型链之类的 但具体的作用不知道.. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 作用在这里:var puppy = new Dog('Wang Wang');alert(puppy.constructor);// 输出这个对象的构造函数Dog如果不加这一句,那么这里的将不会保存一个指向他的构造函数的引用(至少IE是这样的)。因为这个属性很容易就被更改,所以火狐等非IE浏览器另有一个“可访问的”属性叫__proto__它跟constructor的功能一样,但是更可信赖,只是IE不支持。 恩 刚才看了下 Dog.prototype.shout = function(){}这样添加 可以Dog.prototype = {}这样相当于 把prototype覆盖了.. constructor就返回Object了所以要修改下. <script type="text/javascript">function Person(name){ this.name = name;}Person.prototype.getName = function(){ return this.name;}var p = new Person('Tom');console.log(p.constructor === Person);console.log(Person.prototype.constructor === Person);console.log(p.constructor.prototype.constructor === Person);// 想问下constructor 这个内部到底怎么解析呀?Person.prototype.constructor === Person 为什么会指向自身?这个与new的机制有关系么?</script> 更改了prototype就要重新赋值,要不就指向Object了 谁能解析下construct的内部机制? 比如什么时候产生的 怎么起作用的? Person是个函数,JS里面是一种引用类型,就是栈里存的只是它的指针。要理解这个你要先理解定义类的方法要用Person.prototype.fna=fnb(){};是怎么节约内存空间的。暂时你可以把Person.prototype看成Person的一个隐藏的可修改的父类,而Person是从那继承过来的,虽然事实不是这样。以后你就会明白 当NEW的时候就产生了,如果你没有改变他的原型对象的话,他NEW产生出来的对象的CONSTRUCTOR还是指向你的构造函数的,但当你的PROTOTYPE所指向的对象改变的话,他也同时改变了,不知道我理解的对不。 在JavaScript中,constructor可用来实现基于原型的继承。所有构造器都有一个相关联的原型,所有由构造器创建的对象都隐含一个到该原型的引用(称为对象原型)。可以通过程序表达式[object].constructor来返回该对象由谁创建(即它的构造器是什么),可以通过程序表达式[object].constructor.prototype来返回该对象隐含的关联原型引用。 基础语法求解释 重新设置table内容后tablesorter要怎么写? 如何用代码隐藏或显示页面中所有的select控件(可用prototype和jQuery) javascript的数组最大长度是多少? JS 求帮忙修改问题! JavaScript模拟类的尴尬 如何在页面上即时画图,比如:画椭圆、坐标轴等?谁用过DirectAnimation? 页面查询 JS中跳转到一个新界面,原来的界面不会刷新 大神来看看 请给个有在线状态msn代码!! var a = new A();和var a = {};A.call(a);一样吗?
var puppy = new Dog('Wang Wang');
alert(puppy.constructor);// 输出这个对象的构造函数Dog
如果不加这一句,那么这里的将不会保存一个指向他的构造函数的引用(至少IE是这样的)。
因为这个属性很容易就被更改,所以火狐等非IE浏览器另有一个“可访问的”属性叫__proto__它跟constructor的功能一样,但是更可信赖,只是IE不支持。
恩 刚才看了下
Dog.prototype.shout = function(){}
这样添加 可以
Dog.prototype = {}
这样相当于 把prototype覆盖了.. constructor就返回Object了
所以要修改下.
<script type="text/javascript">
function Person(name){
this.name = name;
}Person.prototype.getName = function(){
return this.name;
}var p = new Person('Tom');console.log(p.constructor === Person);
console.log(Person.prototype.constructor === Person);
console.log(p.constructor.prototype.constructor === Person);
// 想问下constructor 这个内部到底怎么解析呀?
Person.prototype.constructor === Person 为什么会指向自身?
这个与new的机制有关系么?
</script>
更改了prototype就要重新赋值,要不就指向Object了
谁能解析下construct的内部机制? 比如什么时候产生的 怎么起作用的?
要理解这个你要先理解定义类的方法要用Person.prototype.fna=fnb(){};是怎么节约内存空间的。
暂时你可以把Person.prototype看成Person的一个隐藏的可修改的父类,而Person是从那继承过来的,虽然事实不是这样。以后你就会明白