jjzjj

inheritance

全部标签

javascript - JavaScript 命名空间、类和继承的简单示例

我被要求将我们的一些PHP代码移植到JavaScript,以便我们的更多逻辑在客户端运行。我想要的是一个简单的例子来展示:包含两个类(“Master”和“Slave”)的命名空间(“Package”)“Master”类有一个属性“p”、一个函数“m”和一个采用单个参数设置“p”初始值的构造函数“Slave”类从“Master”类继承了“p”、构造函数和“m”我不介意使用某种现有框架,但它必须是轻量级的——理想情况下不超过200LOC(未缩小)。这是我的尝试,FWIW:varPackage={};Package.Master=function(pValue){this.p=pValue;

javascript - 如何继承DOM元素类

我想编写一些扩展DOM节点的Javascript类(这样我就可以将我的类的实例直接插入到DOM中),但是很难找到我应该从哪个类/原型(prototype)继承。例如:functionmyExtendedElement(){this.superclass=ClassA;this.superclass();deletethis.superclass;}但是ClassA应该是什么? 最佳答案 这样做不是一个好主意。首先,要从DOM元素继承,您需要有权访问该元素的原型(prototype)。问题是并非所有浏览器都提供对DOM元素原型(pro

javascript - 对象不继承原型(prototype)函数

我有一个构造函数,它充当父类(superclass):Bla=function(a){this.a=a;}我对其进行原型(prototype)设计以包含一个简单的方法:Bla.prototype.f=function(){console.log("f");现在新的Bla(1).f();将在控制台中记录“f”。但是,假设我需要一个继承自Bla的子类:Bla2=function(a){this.base=Bla;this.base();}x=newBla2(5);现在,正如预期的那样,x.a给了我5。但是,x.f是undefined!似乎Bla2没有从Bla类继承它!为什么会发生这种情况,

Javascript 寄生继承

我正在努力使用Javascript经典继承1.虽然最终DouglasCrockford拒绝了它在Javascript中支持经典模型的第一次尝试,但我发现理解它很有趣:IhavebeenwritingJavaScriptfor8yearsnow,andIhaveneveroncefoundneedtouseanuberfunction.Thesuperideaisfairlyimportantintheclassicalpattern,butitappearstobeunnecessaryintheprototypalandfunctionalpatterns.Inowseemyearl

javascript - 为什么使用 'prototype' 进行 javascript 继承?

JavaScript对象具有“原型(prototype)”成员以促进继承。但似乎,即使没有它,我们也可以过得很好,我想知道使用它有什么好处。我想知道有什么优点和缺点。例如,考虑以下内容(此处为jsfiddle):functionBase(name){this.name=name;this.modules=[];returnthis;}Base.prototype={initModule:function(){//initonallthemodules.for(vari=0;i问题是,为什么要使用“原型(prototype)”?我们也可以做一些像Derived=Object.create

javascript - Angularjs Typescript Controller 继承和依赖注入(inject)

我正在尝试创建一组Controller类,这些类派生自具有许多依赖项的基类。每次我想创建派生类时,我都必须将基类构造函数依赖项复制到派生类构造函数中。这看起来特别丑陋和重复。见下文;moduleMyModule{exportclassParentCtrl{constructor($http,$provide,$scope,$compile,MyService,$parse,$timeout){console.log('parent');}FunctionA(){...}...FunctionZ(){...}}exportclassChildCtrlextendsParentCtrl{c

javascript - TypeScript 中的多类继承

有什么方法可以解决最多只能扩展一个其他类的问题。classBar{doBarThings(){//...}}classBazz{doBazzThings(){//...}}classFooextendsBar,Bazz{doBarThings(){super.doBarThings();//...}}这个目前是做不到的,TypeScript会报错。人们可以通过使用接口(interface)在其他语言中解决这个问题,但在TypeScript中不可能解决这些问题。欢迎提出建议! 最佳答案 这可以通过接口(interface)实现:int

javascript - 你能用 Javascript 创建一个不继承自 Object 的对象吗?

偶尔有个JSframework或库认为向Object或Array的原型(prototype)添加一些新功能是一个非常明智的想法。我现在找不到更多示例,但我确实记得我以前遇到过问题。当然,这样做会破坏旧的for(...in...)循环,因为突然间这些属性现在也被枚举了。要绕过它,您必须在访问之前使用.hasOwnProperty()检查每个枚举属性。在尝试编写健壮的代码时,这很麻烦。所以我想知道-有没有什么方法可以让我自己制作对象,而不是从Object继承?最初尝试使用.prototype没有产生任何结果。也许有一些技巧?还是所有东西都继承自Object而我对此无能为力?添加:我想我应该

javascript - JavaScript 中的 Object.assign 和 Object.setPrototypeOf 有什么区别?

假设我有一个具有speak功能的动物对象:functionspeak(){console.log(this.sound)}letanimal={speak}我有一只狗,它会发出声音:letdog={sound:"Woof!"}如果我想让dog从animal继承speak我可以使用Object.assign或对象.setPrototypeOf。它们似乎产生相同的结果:letluke=Object.assign(dog,animal)luke.speak()//Woof!letbruno=Object.setPrototypeOf(dog,animal)bruno.speak()//Woo

Javascript 和 https - 获取相对路径的 XMLHttpRequest 对象 - 是协议(protocol)/端口 'inherited'?

如果我在Javascript中使用相对路径从服务器获取页面(在div中显示输出),Javascript是否使用与加载它的页面相同的协议(protocol)/端口?例如:请求父页面https://www.foo.com/bar.phpbar.php上的JS代码:varturl="/new_dir/index.php?r="+r;if(window.XMLHttpRequest){xmlhttp=newXMLHttpRequest();}else{xmlhttp=newActiveXObject("Microsoft.XMLHTTP");}xmlhttp.open("GET",turl,f