1
var animal = {eats:true};
var rabbit = {jumps:true};

rabbit.prototype = animal;

document.write(rabbit.eats);

我正在尝试原型继承,但这给出了未定义的答案,而应该是正确的。我在 IE9 上做

4

1 回答 1

2

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
于 2012-04-06T07:20:11.897 回答