Javascript 数学不是';不是构造函数,但它有
这里有一个我搞不懂的问题。正如我从MDN中读到的,我们无法从Javascript 数学不是';不是构造函数,但它有,javascript,constructor,Javascript,Constructor,这里有一个我搞不懂的问题。正如我从MDN中读到的,我们无法从Math创建实例。运行new Math()将产生异常Math不是构造函数。但是Math在Math.constructor中有自己的属性。是的,它是Object类型,但我们可以运行它Math.constructor()。但即使我们通过execMath.constructor=Function.constructor重新定义它,它也会抛出一个异常 现在我脑子里有了一些假设: 构造函数包含一个隐藏属性,浏览器引擎拒绝调用它 < LI>在浏览
Math
创建实例。运行new Math()
将产生异常Math不是构造函数。但是Math在Math.constructor
中有自己的属性。是的,它是Object
类型,但我们可以运行它Math.constructor()
。但即使我们通过execMath.constructor=Function.constructor重新定义它,它也会抛出一个异常
现在我脑子里有了一些假设:
- 构造函数包含一个隐藏属性,浏览器引擎拒绝调用它
< LI>在浏览器引擎中,构造函数被解释成特殊C++对象,它在“Type Error:不是构造函数”集合中有索引。李>
有人能彻底回答我为什么构造函数存在,但我不能创建实例吗
提前感谢。发件人:
所有对象都从其原型继承构造函数属性:
var o = {};
o.constructor === Object; // true
var a = [];
a.constructor === Array; // true
Math
只是一个预定义的全局对象,因此:
Math.constructor === Object;
尽管很少使用,var obj=new Object()
是有效的javascriptvar obj={}
更常见、更短;改用它。来自:
所有对象都从其原型继承构造函数属性:
var o = {};
o.constructor === Object; // true
var a = [];
a.constructor === Array; // true
Math
只是一个预定义的全局对象,因此:
Math.constructor === Object;
尽管很少使用,var obj=new Object()
是有效的javascriptvar obj={}
更常见、更短;用它来代替。引用我自己的话,答案是
因为说明书上是这么说的
和
数学对象
Math对象是具有某些命名属性的单个对象,
其中一些是函数
数学对象的[[Prototype]]
内部属性的值为
标准内置对象原型对象(15.2.4)。价值
数学对象的[[Class]]
内部属性是“Math”
数学对象没有[[Construct]]
内部属性;它是
无法将Math对象用作具有新
操作员。
数学对象没有[[Call]]
内部属性;无法将Math对象作为函数调用
javascript中的每个对象都有一个构造函数,Math
是一个对象,因此它有一个构造函数,这并不意味着您可以创建它的新实例,它与
var数学={
是的,
马克斯:错
}
新数学();//epic fail,不是构造函数(函数)
引用我自己的话,答案是
因为说明书上是这么说的
和
数学对象
Math对象是具有某些命名属性的单个对象,
其中一些是函数
数学对象的[[Prototype]]
内部属性的值为
标准内置对象原型对象(15.2.4)。价值
数学对象的[[Class]]
内部属性是“Math”
数学对象没有[[Construct]]
内部属性;它是
无法将Math对象用作具有新
操作员。
数学对象没有[[Call]]
内部属性;无法将Math对象作为函数调用
javascript中的每个对象都有一个构造函数,Math
是一个对象,因此它有一个构造函数,这并不意味着您可以创建它的新实例,它与
var数学={
是的,
马克斯:错
}
新数学();//epic fail,不是构造函数(函数)
每个对象都有一个构造函数,这并不意味着你可以创建对象文本等的新实例。这个问题的答案可能只是“因为规范这么说”。@AndreiZhamoidaMath
是一个对象。该对象必须已构造。每个对象都继承其构造函数的原型方法(在本例中为object)Object.prototype.constructor=Object
函数是可调用的对象。数学不是一个函数。它的构造函数是全局对象,而不是函数。数学类型。构造函数
是函数
每个对象都有一个构造函数,并不意味着你可以创建对象文本等的新实例。这个问题的答案可能只是“因为规范这么说”。@AndreiZhamoida数学
是一个对象。该对象必须已构造。每个对象都继承其构造函数的原型方法(在本例中为object)Object.prototype.constructor=Object
函数是可调用的对象。数学不是一个函数。它的构造函数是全局对象,不是函数。typeof Math.constructor
是Function
Hmm,我想这肯定是我在寻找的东西。根据规范,我可以说这在浏览器引擎实现中隐藏了什么吗?对吗?@AndreiZhamoida-当然,对了?嗯,我想这肯定是我一直在寻找的东西。根据规范,我可以说这在浏览器引擎实现中隐藏了什么吗?“它会正确吗?”安德烈扎莫迪亚-当然,就是这样?