簡體   English   中英

在js中的原型繼承期間,當我嘗試訪問繼承對象的方法時,我變得未定義

[英]during prototypal inheritance in js, i am getting undefined when i am trying to access the method of inherited object

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__對象,比如谷歌瀏覽器,它遲到了你愚弄原型鏈並從另一個靜態繼承一個對象:

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

rabbit.__proto__ = animal;
rabit.jumps; // true
rabit.eats; // true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM