Javascript JS原型,小混乱
我是javascript新手 我正在写一个面向对象的程序来寻找矩形和正方形的面积。我有三门课——形状、正方形和长方形。我想继承父类-Shape,进入子类-Square,我遇到了与原型相关的问题。代码:Javascript JS原型,小混乱,javascript,oop,Javascript,Oop,我是javascript新手 我正在写一个面向对象的程序来寻找矩形和正方形的面积。我有三门课——形状、正方形和长方形。我想继承父类-Shape,进入子类-Square,我遇到了与原型相关的问题。代码: Square.prototype= new Shape(); Square.prototype.__proto__= Shape.prototype; 我想知道: 1.是否写入Square.prototype=newshape()在将类形状继承到类正方形方面就足够了吗? 2.这行有什么区别: S
Square.prototype= new Shape();
Square.prototype.__proto__= Shape.prototype;
我想知道:1.是否写入
Square.prototype=newshape()代码>在将类形状继承到类正方形方面就足够了吗?
2.这行有什么区别:
Square.prototype.\uuuu proto\uuuu=Shape.prototype代码>
让我们去班级广场
非常感谢您的帮助,谢谢 对于您的继承,我宁愿使用:
Square.prototype = Object.create(Shape.prototype);
Square.prototype.constructor = Shape;
出于这些原因:
Square.prototype.\uuuu proto\uuuu=Shape.prototype代码>不是一个好的实践,因为它将用另一个原型替换对象的所有原型链。这个操作非常慢。此外,属性\uuuu proto\uuuu
已被弃用,并可能随时消失:请参见1)是。2) 什么都没有(因为Square.prototype.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。然而,构造一个形状实例来定义正方形的类似乎是不纯洁的;如何将参数传递给形状创建?简言之,这感觉像是另一个郎,而不是一个JS@dandavis:您是对的,该程序实际上是一个nodejs程序,这会改变一切吗?顺便说一句,我打算典型地向类Square添加属性。Felix和Oriol,非常感谢您的评论!fwiw,我发现将方法放在一个对象实例上更容易,然后可以影响我的任何其他实例;为什么每个对象都需要自己的方法呢?对于像smalltalk这样的东西来说,这是有意义的,但是对于像JS这样带有call/bind/apply/defineProperty的脚本语言来说就没有那么多了。如果数据对象只包含“自己的属性”,那么它还可以简化序列化和扩展,并且您不需要担心继承或重新创建继承以保持状态。因为您不继承数据,所以它使一切变得干净,V8使用ObjectObject的速度比自定义类型快。