2016-05-05 39 views
0

を作成した後リテラルをオブジェクトへの追加機能を追加するだから私は、これはオブジェクトリテラルによって作成されたオブジェクトに機能を追加するための正しい方法であるかどうかを疑問に思いました。は、それが

var person = { 
 
    firstname: "default", 
 
    lastname: "default", 
 
    greet: function() { 
 
    return "hi " + this.firstname; 
 
    } 
 
} 
 

 
var me = Object.create(person); 
 

 
me.myFunction = function() { 
 
    return console.log("meow"); 
 
}; 
 

 
console.log(me.myFunction());

それはニャー後に未定義を返します。しかし、それはそうだろう、なぜ何らかの理由があるのでしょうか?あなたは

return console.log("meow"); 

を書くとき

答えて

1

あなたは未定義である、「ニャー」を返しますが、console.logの戻り値はありません。このようなコードを変更します。

me.myFunction = function() { 
    return "meow"; 
}; 

console.log(me.myFunction()); 
+0

感謝を返さないです!完全にその部分を見落とします。これはそれが作成された後、オブジェクトリテラルにメソッドを追加するための正しい方法ですか? – lonestarz

+0

はい、それは完全に罰金です。 – phihag

0

console.log()は、任意の値を返さないので、機能の「フォールバック」値がundefinedです。

あなたがconsole.logの戻り値を返すと、それを再度ログインしているので、あなたはundefinedを取得します。

すべてこれは何もしませんオブジェクトまたはプロトタイプを変更しました。

0

あなたはmeowmyFunction内を返す必要があります:

var person = { 
 
    firstname: "default", 
 
    lastname: "default", 
 
    greet: function() { 
 
    return "hi " + this.firstname; 
 
    } 
 
} 
 

 
var me = Object.create(person); 
 

 
me.myFunction = function() { 
 
    return "meow"; 
 
}; 
 

 
document.write(me.myFunction());

0
var person = { 
    firstname: "default", 
    lastname: "default", 
    greet: function() { 
    return "hi " + this.firstname; 
    } 
} 

var me = Object.create(person); 

me.myFunction = function() { 
    return console.log("meow"); 
}; 

console.log(me.myFunction()); 

あなたがにconsole.logを返す理由を()それは何に