草庐IT

prototype-programming

全部标签

javascript - 原型(prototype)继承应该节省内存吧?

我一直想知道在JavaScript中使用原型(prototype)是否应该比将对象的每个成员直接附加到它更有效,原因如下:原型(prototype)只是一个对象。实例仅包含对其原型(prototype)的引用。对比:每个实例都包含构造函数定义的所有成员和方法的副本。我开始了一个小实验:varTestObjectFat=function(){this.number=42;this.text=randomString(1000);}varTestObjectThin=function(){this.number=42;}TestObjectThin.prototype.text=rando

javascript - 如果Object.prototype被修改,如何测试对象是否为 "isEmpty()"?

我想测试一个对象是否为空:{}。通常使用以下内容:functionisEmpty(obj){for(varpropinobj){if(obj.hasOwnProperty(prop))returnfalse;}returntrue;}但假设Object原型(prototype)被添加到如下:Object.prototype.Foo="bar";测试:alert(isEmpty({}));//trueObject.prototype.Foo="bar";alert({}.Foo);//"bar"ohno...alert(isEmpty({}));//true...**huh?!**我试图

Javascript 原型(prototype)与通用函数 - 性能/可读性

所以我编写了这些测试,看看使用原型(prototype)会快多少......functionUser(){return{name:"Dave",setName:function(n){this.name=n;},getName:function(){returnthis.name;}};}functionUserPrototype(){if(!(thisinstanceofUserPrototype))returnnewUserPrototype();this.name="Dave";}UserPrototype.prototype.getName=function(){returnt

javascript 原型(prototype)继承 - 共享属性

我在原型(prototype)中保存了一个属性_data作为所有创建对象的定义。functionA(){}A.prototype._data=[];现在所有从A创建的对象都有属性_data。我想要原型(prototype)继承,其中原型(prototype)的_data将具有原型(prototype)链中所有原型(prototype)的_data值。不知道直接的方法,在这个例子中我使用了一个getterget()。functionA(){}A.prototype._data=[];A.prototype.add=function(rec){this.__proto__._data.pu

javascript - JavaScript 中 Number 和 Function.prototype 之间的关系是什么?

我正在阅读Javascript:theGoodParts这本书。当我阅读下面的代码时,我有点困惑:Function.prototype.method=function(name,func){this.prototype[name]=func;returnthis;};Number.method('integer',function(){returnMath[this我认为上面代码的第一部分意味着JavaScript中的任何函数现在都有一个名为method的方法。但是“数字”也是一个函数吗?为什么Number.method有意义?我假设Number继承了Number.prototype,

javascript - 在保留对象引用和继承的同时组织原型(prototype) javascript

我使用JavaScript原型(prototype)和继承构建了一个大型应用程序。但是我很难组织我的代码。例如,我有一个类轮播,它有很多这样的功能:Carousel.prototype.next=function(){...}Carousel.prototype.prev=function(){..}Carousel.prototype.bindControls=function(){..}我想这样组织我的代码:Carousel.prototype.controls={next:function(){...},prev:function(){...},bindControls:func

javascript - 原型(prototype): "this"的深层范围以访问实例的范围

如何缓存最顶层的范围以便稍后在原型(prototype)中更深入地使用,如下所示:varGame=function(id){this.id=id;};Game.prototype={board:{init:function(){//obviously"this"isn'ttheinstanceitself,butwillbe"board"console.log(this.id);}}}vargame=newGame('123');game.board.init();//shouldoutput"123"更新:现在想想,我可以用apply/call并传递上下文...game.board.

javascript - 为什么 MDN 的 `Object.create` polyfill 没有设置 `prototype.constructor` ?

考虑MDN'sObject.createpolyfill:if(typeofObject.create!='function'){(function(){varF=function(){};Object.create=function(o){if(arguments.length>1){throwError('Secondargumentnotsupported');}if(o===null){throwError('Cannotsetanull[[Prototype]]');}if(typeofo!='object'){throwTypeError('Argumentmustbean

javascript - 为什么原型(prototype)在简单的 JavaScript 对象中不可用

这个问题在这里已经有了答案:WhyisJavaScriptprototypepropertyundefinedonnewobjects?(5个答案)关闭7年前。我正在尝试理解JavaScript原型(prototype),但我有点困惑。那里有大量教程,每个教程都有不同的解释。所以我不知道从哪里开始。到目前为止,我已经创建了一个简单的JavaScript对象vara={flag:1}在MDN,我读过AllobjectsinJavaScriptaredescendedfromObject但是我找不到这个对象的原型(prototype)aa.prototype给了我undefined然后我发

javascript - 原型(prototype)继承中的 call() 需要什么

我在破译JavaScript中的原型(prototype)继承时遇到了一些麻烦,并想在这里发布它。考虑这个简单的例子:functionEmployee(){this.name="Rob";this.dept="R&D";}functionManager(){//Employee.call(this);this.reports=["Report1","Report2","Report3"];}Manager.prototype=Object.create(Employee.prototype);Employee.prototype.type="human";m=newManager();