var animal = {eats:true};
var rabbit = {jumps:true};
rabbit.prototype = animal;
document.write(rabbit.eats);
我正在尝试原型继承,但这给出了未定义的答案,而应该是正确的。我在 IE9 上做
var animal = {eats:true};
var rabbit = {jumps:true};
rabbit.prototype = animal;
document.write(rabbit.eats);
我正在尝试原型继承,但这给出了未定义的答案,而应该是正确的。我在 IE9 上做
prototype
是在类而不是 JavaScript 中的对象上定义的引用对象,您需要定义一个类并使用以下方法设置继承prototype
:
var animal = {eats:true};
function Rabit(){};
Rabit.prototype = animal;
Rabit.prototype.jumps = true;
var rabit = new Rabit();
rabit.jumps; // true
rabit.eats; // true
或者如果将两个实体都定义为类则更好:
function Animal(){};
Animal.prototype.eats = true;
function Rabit(){};
Rabit.prototype = new Animal();
Rabit.prototype.jumps = true;
var rabit = new Rabit();
rabit.jumps; // true
rabit.eats; // true
在 Gecko 浏览器中有一个未记录的__proto__
对象,比如 google chrome,它会让你欺骗原型链并静态地从另一个对象继承一个对象:
var animal = {eats:true};
var rabbit = {jumps:true};
rabbit.__proto__ = animal;
rabit.jumps; // true
rabit.eats; // true