草庐IT

strict-prototypes

全部标签

javascript - 使用 javascript 对象原型(prototype)扩展类时出现问题

我遇到了这个问题...B是基类,A是派生类...事件虽然A派生自B,但A的各种对象指向B的同一个对象。我知道我已经将B的对象分配给A的原型(prototype),以使A成为B的子对象。但是A的不同对象,应该有不同的地址空间来存放变量吧?你能纠正这个吗?functionB(){this.obj={};}functionA(){}A.prototype=newB();vara=newA();varb=newA();varc=newA();console.log(a.obj==b.obj);//printstrueconsole.log(a.obj===b.obj);//printstrue

Javascript Prototype Chaining父类(super class)构造函数和方法调用

我是JavaScript世界的新手,在尝试原型(prototype)链继承时遇到了这个奇怪的问题。我有3个类(class)//classparentfunctionparent(param_1){this.param=param_1;this.getObjWithParam=function(val){console.log("valueinparentclass"+val);console.log("Constructorparameter:"+this.param);};};//classchildfunctionchild(param_1){this.constructor(pa

javascript - 为什么原型(prototype)函数比默认声明的函数慢 40 倍?

我玩过jsperf.com,发现原型(prototype)函数比“默认”声明的函数慢40倍。String.prototype.contains=function(s){return!!~this.indexOf(s)}=220Kops/s对比functionisContains(str,s){return!!~str.indexOf(s)}=8.5KK操作/秒Here'sajsperftestcase附言我知道原型(prototype)修改不是最好的情况,可以命名为“猴子修补”:) 最佳答案 我认为它很慢,因为字符串基元每次调用一个

javascript - 为什么 ES5 Object 方法没有添加到 Object.prototype 中?

ES5添加了一个number的methods到Object,这似乎打破了JavaScript的语义一致性。例如,在此扩展之前,JavaScriptAPI始终围绕操作对象本身;vararrayLength=[].length;varfirstPosInString="foo".indexOf("o");...新的Object方法是这样的;varobj={};Object.defineProperty(obj,{value:'a',writable:false});...当以下内容更加符合时:varobj={};obj.defineProperty({value:'a',writable:

javascript - 为什么在原型(prototype)而不是构造函数中声明实例属性?

我完全理解为什么最好使用原型(prototype)而不是构造函数来定义类方法,(即Useof'prototype'vs.'this'inJavaScript?)但是,我最近遇到了一个HashMapclass在原型(prototype)中定义了count属性,在构造函数中定义了map属性:js_cols.HashMap=function(opt_map,var_args){/***UnderlyingJSobjectusedtoimplementthemap.*@type{!Object}*@private*/this.map_={};/...}/***Thenumberofkeyval

JavaScript:原型(prototype)是静态的同义词吗?

我正在自学来自OOP背景的JavaScript。我正在学习的书让我想,“哇,属性几乎和静态方法或变量一样!”如果是这种情况,我很乐意更多地实现它们以节省一些内存,但在我爱上它们之前,我想确保我正确使用它们。是这样吗?我的逻辑错了吗?我在下面添加了一些示例代码以用作我的问题的上下文。希望它没有过于简单化:functionperson(first,age){this.firstName=first;this.age=age;}person.prototype.sayHello=function(){return"himynameis"+this.firstName+"andIam"+age

javascript - FireFox 是否支持 Date.prototype.toLocaleString() 中的 IANA 时区?

在执行以下代码时,我在FireFox38.0.1(在撰写本文时全新安装了最新版本)中遇到了一个令人惊讶的异常:vard=newDate()varformattingOptions={timeZone:'America/New_York',month:'2-digit',day:'2-digit',year:'numeric',hour:'numeric',minute:'numeric',second:'numeric'};varformattedDate=d.toLocaleString('en-US',formattingOptions);显然,FireFox不喜欢我对format

javascript - JS : What is 'this' coercion? use-strict 和那个有什么关系?

我在网站上阅读了以下内容:Use-stricthasanadvantage.Iteliminatesthiscoercion.Withoutstrictmode,areferencetoathisvalueofnullorundefinedisautomaticallycoercedtotheglobal.Thiscancausemanyheadfakesandpull-out-your-hairkindofbugs.Instrictmode,referencingaathisvalueofnullorundefinedthrowsanerror.这到底是什么意思?use-strict

javascript - 如何使用 Array.prototype.filter 过滤对象?

给定vararr=[1,2,true,4,{"abc":123},6,7,{"def":456},9,[10]]我们可以使用Number构造函数过滤数组arr中的数字项varres=arr.filter(Number);//[1,2,true,4,6,7,9,Array[1]]true和[10]应该在结果数组中吗?如果我们在arr处将false替换为truevararr=[1,2,false,4,{"abc":123},6,7,{"def":456},9,[10]]varres=arr.filter(Number)//[1,2,4,6,7,9,Array[1]]使用Array.isAr

javascript - 原型(prototype)继承: Can you chain Object.创建?

我是原型(prototype)继承的新手,所以我想了解“正确”的方式。我以为我可以这样做:if(typeofObject.create!=='function'){Object.create=function(o){functionF(){}F.prototype=o;returnnewF();};}vartbase={};tbase.Tdata=functionTdata(){};tbase.Tdata.prototype.say=function(data){console.log(data);};vartData=newtbase.Tdata();tbase.BicData=Ob