构造函数.原型不在原型链中
Constructor.prototype not in the prototype chain?
related:关于原型链、原语和对象的混淆
a = 12
a.constructor.prototype.isPrototypeOf(a) // prints 'false'
我认为这应该打印true
a = 12
创建一个原始数,这与Number
对象不完全相同。原语隐式地强制转换为对象,用于属性访问。
a = 12; //a is a primitive
b = new Number(12); //b is an object
a.constructor.prototype.isPrototypeOf(a); //false because a is primitive
b.constructor.prototype.isPrototypeOf(b); //true because b is an object
根据ECMAScript规范:
当以参数V调用
isPrototypeOf
方法时,将采取以下步骤:
- 如果V不是对象,返回
false
。
基本数严格来说不是对象。
a = new Number(12);
a.constructor.prototype.isPrototypeOf(a) // prints 'true'
我不够聪明,不能告诉你为什么我只知道它是这样的。是的,这很奇怪。
现在,你可以说"12
是一个原语,new Number(12)
是一个对象"。但是你怎么解释这个呢?
(12).toFixed(3); // "12.000"
显然JavaScript在某个地方决定原语也可以是对象。
为什么存在这种区别?如何在这两种形式之间转换?这对性能有什么影响?所有与这个问题相关的问题我都不知道答案
相关文章:
- 如何从构造函数中调用js原型方法
- 通过原型/构造函数从复选框输出值
- Javascript:继承原型而不重新定义构造函数
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- 使用构造函数 - 原型从文本框输出值
- JavaScript原型构造函数只调用过一次
- JavaScript 原型构造函数语法 1 与语法 2
- 构造函数属性值应该是什么 .a 原型构造函数或对象构造函数本身
- 什么是原型?构造函数或其他对象
- 在对象上正确设置原型构造函数
- 重构JavaScript原型构造函数中的重复代码
- 是否需要在经典继承中更改子类的“原型.构造函数”
- 将实例属性放置在原型构造函数中,无论好坏
- javascript原型构造函数和instanceof
- 正在原型构造函数中创建对象引用
- 在javascript的构造函数本身中获取原型构造函数的名称
- 原型构造函数和私有属性的区别
- 为什么原型构造函数中的变量在作为属性访问时未定义
- 如何在 Typescript 中实现无原型构造函数
- 如何为原型链中的构造函数找到根原型构造函数?