tem*_*ame 8 javascript prototype object
我试图理解写作m = Number()(导致typeof m评估为"number")vs m = new Number()(导致typeof m评估为"object")之间的区别.
我原以为它是一种object方式.我只是搞乱了,我.helloWorld()在Number原型中添加了一个方法,m无论用什么方法实例化它,我都可以访问它.
这有什么区别?我在写作Number()和做什么之间有什么不同new Number()?为什么一个是object另一个是一个number?
Number()本身返回一个数字基元。当您调用时,new Number()您会收到一个代表 's 的新对象实例Number(相关 ES5 规范)。
当您调用基元上的属性时,基元会自动装箱(就像在 Java 中一样)到该对象的实例,这使您可以调用helloWorld()或object。number
不过,试试这个;
var x = Number(5);
x.bar = function (x) { alert(x); };
x.bar("hello");
var y = new Number(5);
y.bar = function (x) { alert(x); };
y.bar("hello");
Run Code Online (Sandbox Code Playgroud)
你会看到后者有效,而前者则无效;在第一个中, 被number自动装箱为一个数字,并将bar方法添加到它(对象)。当您拨打电话时,x.bar()您正在创建一个新的自动装箱号码,该号码bar不存在。
在后者中,您bar向该 Number 实例添加一个方法,该方法的行为与任何其他 Object 实例类似,因此它在该对象的整个生命周期中持续存在。
| 归档时间: |
|
| 查看次数: |
817 次 |
| 最近记录: |