2017-04-05 133 views
0

我试图获取deliciouslove方法的名称,然后将其放入数组quotes。我需要这样做,因为报价将显示在选择框中。我尝试使用Function.name。它适用于Say,但是当我在deliciouslove上使用它时,我得到的是空字符串。无法返回对象方法名称

这里有什么问题?

console.log('>>START') 

function Say(name) { 
    this.name = name 
} 

function Food(name) { 
    this.name = name 
} 

Say.delicious = function(food) { 
    if (!food) food = 'food' 
    console.log('This '+food+' is delicious') 
} 
Say.love = function(food) { 
    if (!food) food = 'food' 
    console.log('I love '+food) 
} 

var pizza = new Food('Pizza') 
var donut = new Food('Donut') 
var quotes = [Say.delicious.name, Say.love.name] 

Say.delicious(donut.name) // This Donut is delicious 
Say.love(pizza.name) // I love Pizza 
console.log(quotes) // ["",""] 
console.log(Say.name) // Say 

回答

0

这是因为功能delicious实际上是有Say.delicious参考,如果我理解正确的匿名函数。

你可以通过指定它像这样使它成为一个命名函数:

Say.delicious = function delicious(food) { 
    if (!food) food = 'food' 
    console.log('This '+food+' is delicious') 
} 

console.log('>>START') 
 

 
function Say(name) { 
 
    this.name = name 
 
} 
 

 
function Food(name) { 
 
    this.name = name 
 
} 
 

 
Say.delicious = function delicious(food) { 
 
    if (!food) food = 'food' 
 
    console.log('This '+food+' is delicious') 
 
} 
 
Say.love = function love(food) { 
 
    if (!food) food = 'food' 
 
    console.log('I love '+food) 
 
} 
 

 
var pizza = new Food('Pizza') 
 
var donut = new Food('Donut') 
 
var quotes = [Say.delicious.name, Say.love.name] 
 

 
Say.delicious(donut.name) // This Donut is delicious 
 
Say.love(pizza.name) // I love Pizza 
 
console.log(quotes) // ["",""] 
 
console.log(Say.name) // Say