草庐IT

Prototype

全部标签

javascript - 我们是否仍然需要 ES6 中的原型(prototype)来让所有类实例共享一个方法副本?

更新2:这个问题一团糟,因为我认为ES6class不会修改.protototype,而它会,因此这正是我想要。我接受了最广泛的答案,即使所有的答案和评论应该在一开始就为我指明了正确的方向:)谢谢大家!旧的:在ES6之前的旧JS中,当我们学习如何创建“类”时:functionX(){this.foo=function(){}};varx=newX();我们还知道,每次我们执行x=newX();时,我们都会得到“foo”方法的副本,在每个实例中这是其中之一使用原型(prototype)是个好主意的原因。现在,在ES6中我们有了这个新的很酷的类语法,但有相同的“问题”,即这里复制了“f”方法

javascript - 无法使用 "class"方法在 JavaScript 中进行回调

我在JavaScript中的原型(prototype)上度过了一段非常艰难的时光。以前我无法调用这样的东西:o=newMyClass();setTimeout(o.method,500);有人告诉我可以使用以下方法修复它:setTimeout(function(){o.method();},500);这行得通。我现在遇到了一个不同的问题,我想我可以用同样的方法解决它,只需放入一个匿名函数即可。我的新问题是:MyClass.prototype.open=function(){$.ajax({/*...*/success:this.some_callback,});}MyClass.pro

javascript - JS不可枚举函数

我试图在原型(prototype)对象上定义一个不可枚举的toJSON函数,但运气不佳。我希望得到类似于ECMAScript5toJSON的东西:Object.defineProperty(obj,prop,{enumerable:false});然而,这将它定义为一个不能作为方法访问的属性。[编辑:尼克错了;它可以作为一种方法来访问。他的错误在于此问题中未显示的代码-有关详细信息,请参阅他对下面答案的评论。]我希望能够以不可枚举的方式定义函数,因为我计划在所有基本类型的原型(prototype)中定义(String,Number、Boolean、Array和Object),以便我可以

javascript - ES6 类文字中的 IIFE

在ES5中我们都可以这样做:myClass.prototype.myMethod=(function(){returnfunction(){}})();我能用ES6类文字做同样的事情吗? 最佳答案 不,至少现在还没有。ES6类仅支持声明方法,因此任何不直接是方法的东西(包括间接评估为方法的东西,例如IIFE)仍必须使用原型(prototype)声明。但是,ES6类实际上与ES5构造函数一样工作,只是语法更简洁,所以您仍然可以这样做:classMyClass{constructor(){/*initialize*/}regularMe

javascript - 关键字原型(prototype)在 jquery 中究竟做了什么?

jquery中的关键字(或方法?)原型(prototype)是否类似于扩展方法?即以后所有类都将具有此功能吗? 最佳答案 这是javascript的一部分,并不特定于jquery。prototype属性定义该类型的所有对象共享的方法和属性。例如functionMyClass(){}myClass.prototype.myMethod=function(){alert("helloworld");}varmyObject=newMyClass();myObject.myMethod();MyClass的所有实例都将具有(共享)方法my

javascript - 打印对象的所有隐藏属性

所以我有空对象a={}。当我执行console.log(a)、console.dir(a),甚至for(bina){console.log(b);}我看不到“隐藏属性”,例如__defineGetter__、hasOwnProperty等。如何打印对象的所有属性? 最佳答案 你要找的是non-enumerable对象的属性(可能还有它从其原型(prototype)继承的属性)。我认为没有任何标准方法可以通过JavaScript获取它们。如果您使用调试器检查对象,通常会显示对象的所有属性(不仅仅是可枚举的属性)。现在所有主流浏览器都内

javascript - subclass.prototype = new superclass()与subclass = new superclass()

我一直在实例化javascript中的子类,使用object=newclass()但我注意到有人实例化使用object.prototype=newclass()问题:有什么区别?在我看来,后者似乎更尊重继承链,因为如果class()包含一堆“this.variable=x”语句,并且object是您要从其继承的对象而不是类的实例,则可以将这些变量准确地分配给object的原型(prototype),而不是像前一种情况那样针对对象本身。所以实际上是这样吗?object=newclass()|vs.|subclass.prototype=newsuperclass()但是,程序中的功能都相

javascript - 主干 View 继承

我正在尝试为一个对象浏览器编写一个BackboneView,该View旨在在具有不同对象类型和略有不同操作的多个地方实现。我曾尝试简单地在我的浏览器中扩展主干View,然后在我的实现中扩展浏览器,但是这给我留下了一些共享的属性。这是一个不受欢迎的效果,因为数据会附加到每个浏览器创建的所有实现中。有人可以阐明解决此问题的方法或替代解决方案吗?以下是一些代码示例,可让您更好地了解它的当前状态:varBrowserView=Backbone.View;_.extend(BrowserView.prototype,Backbone.View.prototype,{className:'brow

javascript - Jquery.each() 和 Array.prototype.forEach() 方法的区别

这个问题在这里已经有了答案:jQuery.eachimplementationdiffersfromnativeArray.forEach(3个答案)关闭9年前。Jquery.each()和Array.prototype.forEach()方法之间有什么区别吗,因为array.forEach()方法也可用于循环具有length属性的类数组对象。我看到的唯一区别是参数的放置,它们还有什么不同?Ifoundthis:varobj={one:1,two:2,three:3,four:4,five:5};jQuery.each(obj,function(i,val){$("#"+i).appe

javascript - 使用 Prototype 或 jQuery 实现 .lastChild 的最佳方式

目前我们使用prototype和jQuery作为我们的js框架。现在,jQuery设置为$j()以防止原型(prototype)冲突。过去,我们大量使用原型(prototype)的Element.down()、Element.next()和Element.previous()来遍历DOM。但是,我需要一种简单的方法来检索最后一个子元素。我知道我可以使用Element.childElements()遍历一个数组,但我想要一些内联的东西,它可以清晰地读取并且可以进行流水线处理。只是想在重新发明轮子之前先问一下。下面是一段代码,其中包含需要替换的lastChild:_find:functio