我不知道为什么要使用它Treat all warnings as errors
继承?
Treat Incompatible Pointer Type Warnings as Errors
答案 0 :(得分:0)
这与Javascript对象扩展和继承的工作方式密切相关。在Javascript中扩展具有新属性的对象,您必须扩展它的基础原型。
这是一个具有最广泛和优雅的继承方法的小片段。还有其他的原型继承方法,最好的是 Crockford 继承方法(见下文)。
// Classical (the best to use)
Surrogate = function () {
Parent.call(this);
this.type = 'Child Element';
//... other properties
};
Surrogate.prototype = Object.create(Parent.prototype);
Surrogate.prototype.constructor = Surrogate;
Surrogate.prototype.copy = function (source) {
Parent.prototype.copy.call(this, source);
return this;
};
Crockford继承方法:
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
回到你的问题。 apply
和call
之间的唯一区别是第一个需要参数数组作为参数。使用apply,您可以使用数组文字,例如
fun.apply(this, ['eat', 'bananas'])
或Array对象,例如:
fun.apply(this, new Array('eat', 'bananas')).
有关详细说明,请查看以下文章:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
extend
函数执行相同的操作:使用额外参数扩展父对象。
return this
返回已调用该方法的对象实例,并用于方法链接。因此,您可以在同一个实例化对象上一次调用多个方法:
var surrogate = new Surrogate();
surrogate.copy().delete();