项目是用springboot搭建的,增加了jetty9插件后,报错:Provider org.eclipse.jetty.apache.jsp.JuliLog not a subtype,如图: ?
将subtype1设置为exp组,其余两组(subtype2,和subtype3)设置为con组。 <- ifelse(dt$subtype == 'Subtype1', 'Exp', 'Con') table(dt$subtype) dt <- dt[order(dt$subtype), ] dt_Con) <- dt_Con$subtype dt_Con$subtype <- NULL dt_Con <- as.data.frame(t(dt_Con)) dt_Exp$subtype <- ifelse(dt$subtype == 'Subtype2', 'Exp', 'Con') table(dt$subtype) dt <- dt[order(dt$subtype), ] <- ifelse(dt$subtype == 'Subtype3', 'Exp', 'Con') table(dt$subtype) dt <- dt[order(dt$subtype), ]
} // 继承了 SuperType SubType.prototype = new SuperType(); var subType1 = new SubType(); subType1.colors.push = new SubType(); console.log(subType2.colors); // "red,blue,green,black",subType2 的 colors 值为 subType1 "; subType1.sayAge(); // 29 var subType2 = new SubType("Greg", 27); console.log(subType2.colors 这样一个 SubType 实例会包含两组 SuperType 的属性,一组在 SubType 实例上,一组在 SubType 原型中。 " subType1.sayName(); // "Nicholas"; subType1.sayAge(); // 29 var subType2 = new SubType
= function () { return this.subproperty; }; SubType.prototype = new SuperType(); // 对 SubType 得原型链重新指定 __proto__ === SubType.prototype // true SubType.prototype. = new SuperType() // 原型链继承 let s1 = new SubType() let s2 = new SubType() s1.colors.push("yellow") =()=>{} } function SubType() { SuperType.call(this) // 构造函数继承 } let s1 = new SubType() let s2 = this.fn=()=>{} } function SubType() {} SubType.prototype = new SuperType() // 原型链继承 let s1 = new SubType
) dt <- dt[order(dt$subtype), ] dt[1:4,1:4] dt_Con <- subset(dt, dt$subtype == 'Subtype1') dt_Con [1:4,1:4] dt_Exp <- subset(dt, dt$subtype == 'Subtype2') dt_Exp[1:4,1:4] dt_Con$subtype <- paste0 (dt_Con$subtype, rownames(dt_Con)) rownames(dt_Con) <- dt_Con$subtype dt_Con$subtype <- NULL dt_Con ) dt <- dt[order(dt$subtype), ] dt[1:4,1:4] dt_Con <- subset(dt, dt$subtype == 'Subtype2') dt_Con (dt_Con$subtype, rownames(dt_Con)) rownames(dt_Con) <- dt_Con$subtype dt_Con$subtype <- NULL dt_Con
== 0x00 Association response wlan.fc.type_subtype == 0x01 Reassociation request wlan.fc.type_subtype Probe response wlan.fc.type_subtype == 0x05 Beacon wlan.fc.type_subtype == 0x08 Disassociate wlan.fc.type_subtype frame wlan.fc.type_subtype == 0x0D Block ACK requests wlan.fc.type_subtype == 0x18 Block ACK wlan.fc.type_subtype to send wlan.fc.type_subtype == 0x1C ACK wlan.fc.type_subtype == 0x1D Contention free period end wlan.fc.type_subtype == 0x1E NULL data wlan.fc.type_subtype == 0x24 QoS data wlan.fc.type_subtype == 0x28 Null QoS data wlan.fc.type_subtype
instance = new SubType(); console.log(instance.getSuperValue()); // true 以上代码定义了俩个类型 SuperType和SubType ,这里SubType就是继承了SuperType。 这个赋值重新更改了SUbType的最初原型,替换成了SuperType实例。这样意味着SuperType实例可以访问所有的属性和方法也存在与SubType.protoype。 于是 instance(通过内部的Prototype)指向SubType.prototype,而 SubType.prototype(作为 SuperType 的实例又通过内部的Prototype)指向 的实例创建的新对象执行后,相当于新的SubType对象运行了SuperType()函数中的所有初始化代码。
() { this.subName = "SubType"; // 子类属性};SubType.prototype = new SuperType(); // 重写原型对象,代之以一个新类型的实例/ 如果要新增原型属性和方法,则必须放在 SubType.prototype = new SuperType('SubType'); 这样的语句之后执行。 () {} // 原型链继承 SubType.prototype = new SuperType(); // 实例1 var instance1 = new SubType(); instance1 = new SuperType(); // 重写原型对象,代之以一个新类型的实例SubType.prototype.constructor = SubType; // 组合继承需要修复构造函数指向SubType.prototype.saySubName Object.setPrototypeOf(subType, superType) : subType.
() { this.subName = "SubType"; // 子类属性 }; SubType.prototype = new SuperType(); // 重写原型对象,代之以一个新类型的实例 ; // true // 注意 SubType instanceof SuperType; // false SubType.prototype instanceof SuperType ; // true 如果要新增原型属性和方法,则必须放在 SubType.prototype = new SuperType('SubType'); 这样的语句之后执行。 () {} // 原型链继承 SubType.prototype = new SuperType(); // 实例1 var instance1 = new SubType(); Object.setPrototypeOf(subType, superType) : subType.
SubType('A') subA.sayName() // A console.log(subA.superName) // superName 以上代码中,我们并没有为SubType定义sayName () 方法,SubType中也没有superName属性,但SubType创建的示例subA却可以使用sayName()方法打印出 自己的name属性,同时可以访问到并非自身定义的 superName属性 () { } SubType.prototype = new SuperType() var subA = new SubType() subA.element.push('D') subA.printElement 简单的提取调用后,则SubType中实际上会变成这样: function SubType () { window.propertyA = 'propertyA' window.propertyB 为了让SuperType在调用时,其包含的属性能够正确的复用到SubType中,只需要将SuperType的执行环境绑定到SubType上即可。
function SubType () { this.subProperty = false; } SubType.prototype = new SuperType(); SubType.prototype.getSubValue () { } SubType.prototype = new SuperType(); // 实例 var instance1 = new SubType(); instance1.colors.push 创建子类实例时,无法向父类构造函数传参 // 调用父类是在 SubType.prototype = new SuperType() // 新建子类实例调用 new SubType() // 所以无法再 = new SuperType(); SubType.prototype.constructor = SubType; SubType.prototype.sayAge = function () { = new SuperType(); //第一次调用 SuperType() SubType.prototype.constructor = SubType; SubType.prototype.sayAge
() { this.subproperty = false; } // 继承 SuperType SubType.prototype = new SuperType(); SubType.prototype.getSubValue () { this.subproperty = false; } SubType.prototype = new SuperType(); // 这里使用字面量添加方法会破坏原型链 SubType.prototype function SuperType () { this.colors = ['red', 'blue', 'green']; } function SubType () {} SubType.prototype new SuperType(); // 第一次调用父类构造函数 SubType.prototype.constructor = SubType; SubType.prototype.sayAge = ; // 创建新对象 prototype.constructor = subType; // 增强新对象 subType.prototype = prototype; // 赋值给子类原型 }
function SubType() {} var instance = new SubType(); 比如上面的代码,其中,SubType是构造函数,SubType.prototype是原型对象,instance SubType(); 上面的代码中,我们先是让SubType继承了SuperType,接着创建出SubType的实例instance,因此,instance可以访问SubType和SuperType原型上的属性和方法 = SubType; SubType.prototype.sayAge = function() { console.log(this.age); } var instance1 = new SubType SuperType(); // 第一次调用超类型构造函数 SubType.prototype.constructor = SubType; SubType.prototype.sayAge = function 结果就是在SubType.prototype和SubType的实例上都会创建name和colors属性,最后SubType的实例上的name和colors属性会屏蔽掉SubType.prototype上的
作为SubType的实例对象,必然能共享SubType的原型对象的属性,又因为SubType的原型对象又指向SuperType原型对象的属性,因此可得,instance继承了SuperType原型的所有属性 = new SuperType(); SubType.prototype.constructor = SubType; SubType.prototype.sayAge = function() { 回忆一下,在第一次调用SubType时。 这2个属性存在SubType的原型中。而在第二次调用时,就是在创造实例对象时,调用了SubType构造函数,也就会再调用一次SuperType构造函数。 = prototype; } 将组合继承中的: SubType.prototype = new SuperType(); SubType.prototype.constructor = SubType
(name,age){ SuperType.call(this,name); this.age = age; } SubType.prototype = 调用SuperType,并且传入name,然后定义自己的属性age,此外SubType.prototype也被赋值位SuperType实例。 原型赋值后又在这个原型上添加sayage方法,这样创建俩个subType实例,这俩个实例都有自己属性,还可以共享相同的方法。 // 创建对象 prototype.constructor = subType; // 增强对象 subType.prototype = prototype; // 赋值对象 SuperType 构造函数,避免了 SubType.prototype 上不必要也用不到的属性, 因此可以说这个例子的效率更高。
() { this.subProperty = false } // 继承了 SuperType SubType.prototype = new SuperType() SubType.prototype.getSubValue ()) // true 上述代码定义了 SuperType 和 SubType 两种类型,每个类型分别有一个属性和一个方法,SubType 通过改写原型对象的方式实现对 SuperType 的继承。 在确立了继承关系后,我们给 SubType.prototype 又添加了一个新方法,这个例子中的关系图如下: 在上述代码中,我们修改 SubType 默认的原型为 SuperType 的实例,新原型不仅具有作为一个 最终的结果是这样的:instance 指向了 SubType 的原型,SubType 的原型又指向了 SuperType 的原型。 instance. __proto__ === SubType.prototype // true SubType.prototype.
function SuperType() { this.b = [1, 2, 3]; } function SubType() {} SubType.prototype = new SuperType (); SubType.prototype.constructor = SubType; var sub1 = new SubType(); var sub2 = new SubType(); // (name) { SuperType.call(this, name); } var sub1 = new SubType(); var sub2 = new SubType(); // 传递参数 第一次调用 SuperType SubType.prototype.constructor = SubType; 优点: 可以继承实例属性/方法,也可以继承原型属性/方法。 SubType.prototype 上创建不必要的属性。
1 window.onload = function() { 2 var person1 = new SubType("Gee", 20); 3 var person2 = new SubType("Key", 21); 4 5 person1.colors.push("yellow"); 6 alert("person1: " + person1.colors 15 F.prototype = o; 16 return new F(); 17 } 18 19 /** 20 * 继承超类型的方法 21 * @param {Object} subType ; // 增强对象 28 subType.prototype = prototype; // 指定对象 29 } 30 31 function SuperType(name) { , SuperType); 47 48 SubType.prototype.sayAge = function () { 49 alert(this.age); 50 };
() { this.subproperty = false; } // 继承SuperType SubType.prototype = new SuperType(); SubType.prototype.getSubValue () { this.subproperty = false; } // 继承SuperType SubType.prototype = new SuperType(); // 新方法 SubType.prototype.getSubValue = function() { return this.subproperty; }; // 覆盖已有的方法 SubType.prototype.getSuperValue = function() ,这会导致上一行无效 SubType.prototype = { getSubValue() { return this.subproperty; }, someOtherMethod() { ) { } // 继承SuperType SubType.prototype = new SuperType(); let instance1 = new SubType(); instance1.
() { this.property = "sub"; }// 子类继承父类SubType.prototype = new SuperType();var instance = new SubType SuperType.call(this); }var instance1 = new SubType();var instance2 = new SubType();instance1.users.pop = function () { console.log(this.product); };// SubType实例var instance1 = new SubType("A", "tellphone 其基本模式如下: function inheritPrototype(subType, superType) { // 返回父类原型副本并赋值给子类原型 subType.prototype = object(superType.prototype); subType.prototype.constructor = subType; } 再来看一个例子: // 父类function