草庐IT

Prototype_Console

全部标签

javascript - 为什么我的javascript代码不能继承Animal类的原型(prototype)?

我正在尝试创建一个新类Dog通过原型(prototype)继承从Animal继承类:functionAnimal(){this.name="animal";this.writeName=function(){document.write(this.name);}}functionDog(){this.name="dog";this.prototype=newAnimal();}newDog().writeName()JSFiddle但是,我收到一个Javascript错误:UncaughtTypeError:Object#hasnomethod'say'.为什么?不应该Dog对象保留A

javascript - 为什么使用 Function.prototype.bind 而不是 Function.prototype.call?

myFunction.call(thisArg,arg1,arg2...)我的理解是,当我使用call方法并提供thisArg时,函数中的this值设置为我传入的对象.myFunction.bind(thisArg,arg1,arg2...)而另一方面,bind方法返回一个新函数,新函数的this上下文设置为我传入的对象。但我不明白的是为什么要使用bind而不是call。如果我只想更改this的上下文,call对我来说就足够了。那为什么要在IE8及以下浏览器中中断时使用bind。那么,与call相比,什么时候使用bind会更好? 最佳答案

javascript - IE >= 8 的原型(prototype) Event.StopPropagation

我理解为IE处理event.stopPropagation的正确方法是if(event.stopPropagation){event.stopPropagation();}else{event.returnValue=false;}但是是否可以对Event进行原型(prototype)设计,这样我就不必在每次使用stopPropagation时都进行检查?这个问题似乎很有帮助:JavaScriptEventprototypeinIE8但是我不太理解公认的答案,也不太理解它是一个基本上可以设置并忘记的原型(prototype)。 最佳答案

javascript - setTimeout(函数(){console.log(3)}, 0);它的值为 0

这个问题在这里已经有了答案:WhyissetTimeout(fn,0)sometimesuseful?(19个回答)关闭7年前。当我在控制台中执行以下代码时,我得到的是:1,4,未定义3,2。我想知道为什么它不作为1,3,4和2执行因为在setTimeout(function(){console.log(3)},0);中,毫秒参数是0。(function(){console.log(1);setTimeout(function(){console.log(2)},1000);setTimeout(function(){console.log(3)},0);console.log(4);

javascript - 在 JavaScript 中向构造函数的原型(prototype)隐式添加方法

以下是Crockford的JavaScript:好的部分中的代码片段:Function.prototype.method=function(name,func){this.prototype[name]=func;returnthis;};Crockford继续解释"ByaugmentingFunction.prototypewithamethodmethod,wenolongerhavetotypethenameoftheprototypeproperty.Thatbitofuglinesscannowbehidden."对于这一点,我基本上是一头雾水。哪些是我们以前必须做但现在不再

javascript - 在原型(prototype)继承中实现实例方法/变量

在阅读http://javascript.crockford.com/prototypal.html之后,我一直在研究原型(prototype)继承。并且在理解如何以使用经典继承的方式使用它时遇到了一些问题。也就是说,原型(prototype)继承的所有函数和变量本质上都变成静态的,除非它们被子对象覆盖。考虑这个片段:varDepot={stockpile:[],loadAmmo:function(ammoType){this.stockpile.push(ammoType);}};varMissileDepot=Object.create(Depot);varGunDepot=Obj

javascript - Javascript 中的原型(prototype)

尽管我已经阅读了很多相关内容,但我还是无法理解原型(prototype)概念。为什么会有String和String.prototype?如果我有"cat":是String还是Object?它是否继承了String或String.prototype的所有属性/方法?为什么会有String和String.prototype?我应该将String称为String对象并将String.prototype称为String原型(prototype)吗?请澄清这一点。 最佳答案 我回答这个问题是因为这个主题中有很多错误信息:IsthataStri

javascript - 为什么 console.log(true, '\t' ) 打印 true ""?

在Chrome中,以下内容console.log(true,'\t');将打印true""为什么周围有引号?(注意console.log(true+'','\t')只会打印true,与console.log的方式相同('a','\t');只会打印a。) 最佳答案 console.log基本上有两个重载:console.log(formatString,args)和console.log(arg1,arg2,...).更具体地说,根据thesourcecode,如果第一个参数是一个字符串,那么它会将其视为其他参数的格式字符串。否则直接

javascript - 原型(prototype)复制 vs Object.create() vs new

我在使用继承时注意到可以通过三种方式获得相同的结果。有什么区别?functionAnimal(){}Animal.prototype.doThat=function(){document.write("Doingthat");}functionBird(){}//ThismakesdoThat()visibleBird.prototype=Object.create(Animal.prototype);//Solution1//Youcanalsodo://Bird.prototype=newAnimal();//Solution2//Or://Bird.prototype=Anima

javascript - 为什么不应该向 JavaScript 构造函数添加功能,而是通过原型(prototype)添加功能?

我在看AddyOsmani关于构造函数模式的章节:http://addyosmani.com/resources/essentialjsdesignpatterns/book/#constructorpatternjavascript我遇到了以下情况:functionCar(model,year,miles){this.model=model;this.year=year;this.miles=miles;this.toString=function(){returnthis.model+"hasdone"+this.miles+"miles";};}//Usage://Wecancr