我试图获取delicious
和love
方法的名称,然后将其放在数组quotes
中。我需要这样做,因为引号将显示在选择框中。我尝试使用Function.name
。它适用于Say
,但当我在delicious
和love
上使用它时,我会得到空字符串。
这里有什么问题?
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 :(得分: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