【发布时间】:2016-02-25 18:01:22
【问题描述】:
我尝试如下创建一个 javascript 对象
var SuperObj = function(){
this.super = "super from Super";
this.prototype.getSuper = function(){
return this.super;
}
}
上面的代码抛出错误:
TypeError: 无法设置未定义的属性“getSuper”
但是,当我尝试以下代码时,它起作用了。
var SuperObj = function(){
this.super = "super from Super";
SuperObj.prototype.getSuper = function(){
return this.super;
}
}
我想知道区别。我认为在第一种情况下,两个“this”共享相同的执行环境。为什么我们可以使用它来添加属性而不是原型属性中的功能?
【问题讨论】:
-
您可能应该在构造函数之外声明原型。仅在其中声明带有“this”的实例数据。比如:
var SuperObj = function(){this.super = "super from Super";}; SuperObj.prototype.getSuper = function(){return this.super;};
标签: javascript this self