草庐IT

Prototype

全部标签

javascript - 扩展主干模型或 View 时,我如何创建在实例而不是原型(prototype)上创建的属性?

我想做的事:varMyModel=Backbone.model.extend({someProp:{...},..});但是有newMyModel().someProp===newMyModel().someProp返回false好像我已经完成了functionMyModel(){this.someProp={...};}我不想将赋值this.someProp={...};放在initialize方法中,因为如果我继承MyModel,我将不得不重复也可以在子类的初始化方法中再次赋值,或者记得每次我子类化时调用父类初始化从子类初始化,这在我看来是一种解决方法而不是解决方案。那么,还有没有

javascript - 为什么不通过对方法的引用来传递原型(prototype)更改?

GoogleAnalytics最初使用_gaq[objectArray].将数组传递给函数在JavaScript中是通过引用传递对象。(编辑:正如答案中所指出的,引用是按值传递的。有关JavaScript中引用/值传递的更多详细信息,请参阅https://stackoverflow.com/a/5314911/120521。)下面的代码使用jQuery等待DOM加载,然后附加一个change一旦用户更改,该事件将向GoogleAnalytics发送虚拟网页浏览字段。var_gaq=_gaq||[];_gaq.push(['_setAccount',_gAAccount]);_gaq.p

javascript - 在 Fabric.js 中,如何修改对象类以便所有子类都具有新的自定义属性?

我正在寻找一种方法来扩展具有自定义属性的基础fabric.Object类,我可以保存到JSON并从JSON加载,这将一直传播到各种子类。特别是我想存储一个深度属性,这样当我从JSON加载对象时,我将能够为对象添加适当的视差。我想解决方案将包括修改fabric.Object.prototype。但我仍在学习如何使用原型(prototype)。以下是我尝试过的一些例子:http://www.sitepoint.com/fabric-js-advanced///createarectangleobjectvarrect=newfabric.Rect({left:100,top:100,fil

javascript - 通过实例方法修改类的所有成员

在JavaScript中,是否可以在影响其所有兄弟对象的对象上调用实例方法?例如,假设我有以下类(class):functionThing(){this.active=false;}Thing.prototype={constructor:Thing,activate:function(){this.active=true;},deactivate:function(){this.active=false;}};我是否可以创建一个activateAll方法来激活类Thing的所有实例?我需要this.active成为一个实例变量。 最佳答案

javascript - 如何将原型(prototype)上定义的方法作为回调传递给 Array.map

我有一个数组vararr=['A','b','c'];我想trim数组中每个元素的空格。这可以通过使用Array.map来完成作为arr.map(function(el){returnel.trim();});我很好奇将trim/toLowerCase函数作为回调函数直接传递给map,例如arr.map(Math.max.apply.bind(Math.max,null));从每个子数组或arr.map(Number);中获取最大元素将每个元素转换为数字。我试过了arr.map(String.prototype.trim.apply);但是报错UncaughtTypeError:Fun

javascript - 除了执行 Object.prototype.hasOwnProperty.call(obj, key) 是否有 ES6+ 替代方案?

检查对象是否具有特定键的最可靠方法是:Object.prototype.hasOwnProperty.call(obj,key)这提供了一定的保证:如果key是obj的direct属性,它只会评估为true,即使obj没有通常的Object作为其原型(prototype)(例如,如果它是用constobj=Object.create创建的)(null)).但这是一口。在ES6或更高版本中是否有任何新的语法/方法(包括polyfillable或Babel可编译的“建议”)提供相同的保证,但以更好、更易读的方式? 最佳答案 我不知道这有

javascript - 为什么不推荐使用 String.prototype.substr()?

ECMAScript标准中提到了它here那:...ThesefeaturesarenotconsideredpartofthecoreECMAScriptlanguage.ProgrammersshouldnotuseorassumetheexistenceofthesefeaturesandbehaviourswhenwritingnewECMAScriptcode.ECMAScriptimplementationsarediscouragedfromimplementingthesefeaturesunlesstheimplementationispartofawebbrowse

javascript - 我如何检查某物是否是 Raphael 对象?

给定一个JavaScript对象,如何检查它是否是Raphael对象(不是纸,而是圆、路径等)?Raphael.el表示通用元素原型(prototype);我想我要测试一下x.__proto__===Raphael.el以跨浏览器的方式,但我不完全确定。 最佳答案 详细说明并添加一些更相关的信息(我花了一点时间才弄清楚接受的答案,显然我不是一个人在看其他答案,而且,接受的答案只适用于一种拉斐尔对象:它解决了原始问题,这是一个更完整的资源)。检测拉斐尔元素使用x.constructor.prototype==Raphael.el,您将

javascript - 你如何引用 Array.prototype.slice.call()?

我正在编写一个脚本,其中我需要在许多不同的地方克隆数组。因此,我想执行以下操作来模拟克隆功能:varclone=[].slice.call;vararr1=[1,2,3,4,5,6,7,8,9,10];vararr2=clone(arr1,0);不幸的是,上面的代码导致:TypeError:objectisnotafunction。我意识到有很多功能可以进行深度克隆和浅拷贝,但我只想使用内置方法。有趣的是,以下确实有效:varclone=[].slice;vararr1=[1,2,3,4,5,6,7,8,9,10];vararr2=clone.call(arr1,0);有谁知道为什么第

javascript - 使用 .prototype 和 __proto__ 创建子类

我最近一直在通过编写一些gnomeshell扩展来学习javascript,因此我对Javascript的理解受到了我在gnome-shelljavascript源代码中观察到的示例的影响。我有一种感觉,我对类的理解是错误的,只是想得到一些澄清。我已经编写了一些自己的子类,并且在每种情况下,我都通过遵循gnome-shelljavascript源代码中的类似代码来简单地定义它们:Subclass=function(){this._init.apply(this,arguments);}Subclass.prototype={__proto__:Superclass.prototype,