gpt4 book ai didi

JavaScript:Object.method 与 Object.prototype.myMethod?

转载 作者:行者123 更新时间:2023-12-01 02:34:56 26 4
gpt4 key购买 nike

当我想向 JavaScript 中的 Object 类添加方法时遇到问题。我不知道 Object.myMethodObject.prototype.myMethod 之间的区别。

Object.myMethod = function (){};

Object.prototype.myMethod = function (){};

谁能帮帮我

最佳答案

Object 是构造函数。与 JavaScript 中的所有函数一样,它是一个对象,您可以为其附加属性。这些属性可以是函数。这样做

Object.myMethod = function () { };

myMethod附加到Object构造函数,这意味着您可以像这样调用它:

Object.myMethod();
<小时/>

Object.prototype 是用作所有 JavaScript 对象基础的原型(prototype)。它本身就是一个对象,因此您可以再次为其附加属性。不同之处在于,附加到原型(prototype)的属性由所有对象通过其内部 [[Prototype]] 引用进行原型(prototype)继承,因此这样的事情是可能的:

Object.prototype.myMethod = function () { };

var obj = {};
obj.myMethod();

var otherObj = { something: "else" };
otherObj.myMethod();

var objectViaConstructor = new Object();
objectViaConstructor.myMethod();

var instanceOfSomethingThatInheritsFromObject = new XMLHttpRequest();
instanceOfSomethingThatInheritsFromObject.myMethod();
<小时/>

请注意,上面的大部分内容都适用于任意构造函数,但您没有获得特殊的对象字面量语法,并且 Object 的特殊之处在于所有内容(直到并包括示例) XMLHttpRequest) 继承自它。所以:

function MyConstructor() { }
MyConstructor.staticMethod = function () { };
MyConstructor.prototype.method = function () { };

MyConstructor.staticMethod();

var myConstructed = new MyConstructor();
myConstructed.method();

关于JavaScript:Object.method 与 Object.prototype.myMethod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816251/

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