gpt4 book ai didi

javascript - 为什么某些对象方法的声明方式与其他方法不同

转载 作者:行者123 更新时间:2023-12-03 08:37:50 25 4
gpt4 key购买 nike

所以我有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 上调用(我相信这指向对象?)

我不确定这属于什么规则,但我记得看过“向原型(prototype)规则添加属性”here

但是在这种情况下,point 不是原型(prototype),因为它没有实例,对吧?

最佳答案

原型(prototype)用于定义可以在使用new Point创建的任何对象上调用的方法。例如。你可以这样做:

var x = new Point(15, 20);
var str = x.toString();

但是你不会使用x.new(),因为.new()用于创建新对象,它不适用于现有对象。定义 Point.new 创建一个可以调用的函数:

var y = Point.new(10, 20);

关于javascript - 为什么某些对象方法的声明方式与其他方法不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33139924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com