【发布时间】:2017-06-24 06:00:19
【问题描述】:
向函数对象添加属性与向对象原型添加属性有什么区别。请参阅下面的代码。
var foo = function() { this.name = alert("test") };
foo.newProp = function() { ... };
var value = new foo();
// vs
foo.prototype.newProp = function() { ... }
var value = new foo();
我的困惑是当为每个代码运行此代码时值会发生什么,以及“this”如何受到影响。
【问题讨论】:
-
foo和foo.prototype是不同的 对象。一个是创建实例的[[prototype]],另一个不是。这就是区别。 (提示:在每种情况下都尝试访问value.newProp。为避免被污染的结果,请为两个测试创建一个新 / 不同名称的函数。)
标签: javascript prototype