【发布时间】:2015-10-15 04:28:44
【问题描述】:
所以我有 this code 来自课堂上的一个例子。
我们创建的方法是 point.new 方法。
Point.prototype.toString = function() {
return "(" + this.x + "," + this.y + ")";
};
Point.new = function(x,y) {
var newObj = Object.create(this.prototype);
this.call(newObj, x,y);
return newObj;
};
我不明白的是为什么我们不需要将方法声明为
point.prototype.new = function(){}
(事实上,当我这样做时它不会编译) 然而对于
point.prototype.toString(){}
方法是必要的。在这两种情况下,我们都在向 point 对象添加一个新方法,那么为什么一个方法只在 point 上调用,而另一个在 point.prototype 上调用(我相信 this 指向 object?)
我不确定这属于什么规则,但我记得看过“向原型规则添加属性”here。
但在这种情况下,点不是原型,因为它没有实例,对吧?
【问题讨论】:
-
w3schools 不是一个学习的好地方,很遗憾:w3fools.com
-
另一个忽略 w3schools 的请求,网站上的大部分内容具有误导性或明显错误,例如Object.prototype 位于原型链的顶端。不,不是,null 是。 所有 JavaScript 对象……都继承自 Object.prototype。 不,宿主对象不必这样做,Object.prototype 不必这样做,并且可以创建不需要的本地对象。
标签: javascript methods constructor prototype