我最近为自己发现了原型,很乐意帮助找出问题:
代码示例1:
"use strict";
var Car = function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
return obj;
};
Car.prototype.move = function() {
this.loc++;
return this.loc;
};
var bmw = Car(6);
console.log( bmw instanceof Car );
代码示例2:
"use strict";
var Car = {
"makeCar": function(loc) {
var obj = Object.create(Car.prototype);
obj.loc = loc;
return obj;
},
"prototype": {
"move": function() {
this.loc++;
return this.loc;
}
}
};
var bmw = Car.makeCar(6);
console.log( bmw instanceof Car.makeCar );
我写了示例2,因为我想在对象本身内保留Car对象的方法。我不确定它是否可以完成,但它到目前为止仍然有效,除了“instanceof”运算符。
在第一个例子中,它会记录“true”,但在第二个例子中它会记录“false”,我不知道我哪里错了,所以依靠你的帮助,谢谢你。
答案 0 :(得分:1)
.on("click", ".mt-help-more-content", function(e) { $(this).prev('.description').toggle(); }
收益console.log( bmw instanceof Car.makeCar );
...因为false
没有实例' Car.makeCar
属性上的原型。 .prototype
表达式等同于instanceof
。为了使其有效,您需要设置
Car.makeCar.prototype.isPrototypeOf(bmw)
但这很奇怪。只需保持标准模式。如果要将结构单元中的方法与构造函数一起声明,请将所有内容包装在IEFE中like here或仅使用ES6类