函数的原型属性如何影响对象的构造函数属性
how does prototype property of function effects the constructor property of an object?
我有下面的代码片段
function Dad(){
this.name="i am dad";
}
function Son(){
this.nameOfChild="child";
}
var sonBeforeInheritance= new Son();
alert(sonBeforeInheritance.constructor); //outputs Son class
//inheritance done
Son.prototype= new Dad();
var sonObj= new Son();
alert(sonObj.constructor); //outputs Dad class
alert(sonBeforeInheritance.constructor); //outputs Son class
我的理解请回答正确/错误和解释:
- 虽然js中的函数也是对象,但是用new关键字和prototype object创建的对象是唯一可以访问属性constructor即sonObj的对象。constructor和Son.prototype。构造函数是有效的 js中的
- 函数有一个名为prototype的对象,该对象用new关键字定义不具有,即sonObj上面的sonObj不具有prototype即sonObj。
- 现在构造函数指向用于创建对象的类?如果是真的,那么为什么sonObj。构造函数给我爸爸类?有人可能会说,Son的原型已经改变了,那就是Son.prototype。构造函数和"instance of Son"。构造函数指向同一个对象?
- 为什么我要写Son.prototype。构造函数=子继承后?
虽然js中的函数也是对象,但是对象本身就是对象用new关键字和原型对象创建的可以访问名为constructor
的属性
。js中的大多数对象都有一个.constructor
属性,它们从原型中继承了它。同样,由{}
创建的普通对象从Object.prototype
继承,它们的.constructor
将指向Object
,就像数组从Array.prototype
继承.constructor == Array
或函数从Function.prototype
继承.constructor == Function
一样。它们不一定需要由new
创建。
js中的函数有一个对象叫做原型,用new关键字定义的对象没有。上面的sonObj没有原型,也就是sonObj。原型是"定义"
正确的。这就是.prototype
的工作原理。
现在构造函数指向的类是用来制造物体?
不一定。.constructor
是原型上的一个普通属性,因此它将被实例继承,并且初始化为原型对象所属的函数。.prototype
和.constructor
都是可重写的。
如果为真,那么为什么sonObj。构造函数给了我爸爸课吗?
因为你用一个对象覆盖了Son.prototype
,这个对象的.constructor
属性不是Son
,而是继承的值Dad
(你把它改成了new Dad
实例——有问题,顺便说一句)
有人可能会说,原型的儿子已经改变了,然后是Son.prototype.constructor和"instance of Son"。构造函数指向相同的对象?
是的。
为什么我要写Son.prototype。构造函数=儿子后继承?
修复它并使其像您最初期望的那样工作。
- 是否有任何CSS属性对其元素没有影响
- 似乎无法影响嵌套 setTimeout 中的输入元素属性
- 原型混淆:受子原型影响的父原型属性
- 为什么不't concat方法会影响数组的长度属性
- 找出影响IMG大小的当前CSS规则和HTML属性
- 使用局部变量(而不是重复的属性访问)是否会影响性能
- 可以jQuery's.animate()方法可以影响变量,而不是CSS属性
- 使用delete属性而不影响父对象
- 身体& # 39;宽度# 39;影响屏幕计算的属性
- 在html标签中使用合成属性是否有任何可能的负面影响?
- 影响Node.js回调中对象的属性
- 为什么禁用表单提交会影响min和max属性?
- 将鼠标悬停在svg上以影响其他元素的属性;不起作用
- 函数的原型属性如何影响对象的构造函数属性
- 为什么赋值影响实例属性而不是原型属性?
- 递增未定义的对象属性而不影响性能
- inputText的绑定属性如何影响javascript方法
- 在ES6的类属性上设置Angular服务会影响它的功能
- 是否更改构造函数's属性的实例创建后会影响实例吗?如果是,那么如何
- 删除属性节点如何影响DOM4中的NamedNodeMap属性