gpt4 book ai didi

Javascript:对象还是 Object.prototype?

转载 作者:行者123 更新时间:2023-11-29 18:05:55 25 4
gpt4 key购买 nike

我刚刚了解了 Javascript 中的原型(prototype)(不是框架,是 native 功能)。我完美地得到了,至少它的一个用途。示例:

Array.prototype.myMethod = function(){
/*do something super awesome*/
}
var a = [];
a.myMethod();

继续阅读,我看到了一个示例,其中作者向 Object 对象添加了一个 subClass 方法,通过这样做:

Object.subClass = function(hash){/*return an extended object that inherits Object's attributes*/}

目标是创建一种类似于更面向对象的语言语法的方法。因为我希望本书作者使用原型(prototype)功能定义这样的方法,所以我的问题是:

  • 为什么不使用原型(prototype)
  • 直接向对象添加方法而不是附加到它的原型(prototype)是否风险更大?
  • 在某些情况下我更喜欢其中一种方式

最佳答案

Why not use prototype?

因为如果使用原型(prototype),则 subClass 方法仅适用于 Object 的实例。例如,调用 subClass 需要以下内容:

Object.prototype.subClass = function(hash) { /* return an extended object that inherits Object's attributes */ };
function MyClass() { };

var myInstance = new MyClass();
var mySubClassInstance = myInstance.subClass(); // only accessible on instances

这没有多大意义,因为作者希望 subClass 返回对象的扩展实例。目的不是创建父“类”的实例,然后从该实例返回一个新的子实例。这是不必要的。

通过在 Object 上定义它,可以创建 subClass 实例,而无需首先创建 MyClass 的实例:

Object.subClass = function(hash) { /* return an extended object that inherits Object's attributes */ };
function MyClass() { };

var mySubClassInstance = MyClass.subClass();

Isn't more risky to add methods directly to the object rather than the prototype attached to it? Are there situations in which I'd prefer one way over the other.

  • 添加到原型(prototype)以将成员添加到该对象的实例。
  • Add to the object 向该对象添加成员(类似于静态成员的想法)。

关于Javascript:对象还是 Object.prototype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31275971/

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