hoa*_*atv 2 javascript ajax jquery prototype-programming
当我想Object在JavaScript中向类中添加方法时,我遇到了一个问题.我不知道之间的不同Object.myMethod和Object.prototype.myMethod.
Object.myMethod = function (){};
Object.prototype.myMethod = function (){};
Run Code Online (Sandbox Code Playgroud)
谁能帮我吗
Object是构造函数.与JavaScript中的所有函数一样,它是一个对象,您可以为其附加属性.这些属性可以是函数.这样做
Object.myMethod = function () { };
Run Code Online (Sandbox Code Playgroud)
附加myMethod到Object构造函数,这意味着您可以像这样调用它:
Object.myMethod();
Run Code Online (Sandbox Code Playgroud)
Object.prototype是用作所有JavaScript对象的基础的原型.它本身就是一个对象,所以你可以再添加属性.不同的是,附加到原型的属性通过其内部[[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();
Run Code Online (Sandbox Code Playgroud)
请注意,上述大部分内容适用于任意构造函数,但您没有获得特殊的对象文字语法,并且Object特殊之处在于所有内容(包括示例XMLHttpRequest)都从中继承.所以:
function MyConstructor() { }
MyConstructor.staticMethod = function () { };
MyConstructor.prototype.method = function () { };
MyConstructor.staticMethod();
var myConstructed = new MyConstructor();
myConstructed.method();
Run Code Online (Sandbox Code Playgroud)